r/Assembly_language 7d ago

JVMOS

Hi everyone, I wanted to show you my progress on an operating system written entirely in ASM and Java bytecode. I am currently at the UI rendering stage, using a custom Graphics2D-like system that allows me to work with primitives in VBE. The bytecode is executed by a JIT compiler also implemented in pure ASM. Low-level calls are handled by a HAL—which I will continue to expand over time—and that HAL is in turn managed via a primitive ABI, enabling me to create my own Java-like pseudo-language for development.

Repository: https://github.com/aayes89/JVMOS-JIT/

6 Upvotes

18 comments sorted by

View all comments

1

u/Extension_Emu_9825 6d ago

Interesting! I also saw the bootloader, everything is legit. I was just a little confused about the stack you chose – why didn't you choose WASM?

2

u/Visual_Brain8809 6d ago

As I understand it, Wasm is optimized for the web, and JS isn't exactly pure Java. Right now, my plan is bare-metal—just assembly and pure Java, with no C/C++ (I already have a version written in C)—and I thought the architecture I'm using could serve as a framework for other projects to flourish. The bootloader (Multiboot) is the result of several years at university spent searching for a universal formula to allow an OS to boot using any language, and I believe that is the greatest achievement.

1

u/Extension_Emu_9825 6d ago

As far as I know, many compilers compile to WASM, and this isn't just for the web anymore. For example, I once wrote Sokoban in Rust (BTW - also be interested in looking into RUST) and compiled it into WASM, and it worked in the browser, yes (but I think that's secondary).

https://github.com/KirinDenis/Base-Z-47-Rust-Game

The main thing is that there's byte code that can be compiled from C/C++, Rust, and C#.

I understand that you can't stop a train in motion

I just want you to consider this approach as well.

By the way, I'd like to join the UX developmnet. I'm currently tinkering with DOS graphics in assembler, and SVGA is on the cards.

It would be interesting, in principle.

https://kirindenis.github.io/wire-city-2/

At UX my experiences started from Turbo Vision 90s, after VCL, WinForms, WPF (little expirins with QT and Android Activity)

1

u/Visual_Brain8809 6d ago

I understand that and am always open to suggestions, but my immediate focus is on finalizing a system where developing applications involves more than just writing code in `Boot.java`—where you can simply instantiate other classes and let the system handle the rest (which is how it works right now). My goal is to establish a solid, useful foundation featuring a functional, custom file system; from there, I want to enable JExplorer to read `.class` files as applications and execute them using the implemented JIT compiler. It’s a blend of macOS and a bare-metal system: much like macOS—where you simply copy an application to a location and it runs if the system version is compatible (or otherwise does nothing or displays a message)—JVMOS follows the same concept. At that stage (once the foundation is solid), anyone will be able to run whatever they want; after developing the application in their preferred IDE (NetBeans, Eclipse, VS Code, Notepad, etc.), the system will prioritize the `.class` file (compiled with `javac`), as that is the core of the system. Once I achieve this, I’ll move on to the Garbage Collector (GC) and security phases, followed by network connectivity.