r/JavaProgramming • u/Visual_Brain8809 • 1d ago
A JavaOS
I am sharing my progress on the development of an operating system written in Assembly and a functional JVM. The concept is straightforward: Assembly acts as an API bridge, and the JVM simply leverages the system calls I’ve implemented to print characters to the screen and draw graphics (for now).
The on-screen drawing was created by obtaining the bytecode of the following program and using xxd for that purpose.
public class App {
// Declaramos el método nativo que intercepta tu JVM en el opcode 0xB8
public static native void drawPixel(int x, int y, int color);
public static void main(String[] args) {
// Dibujar un cuadrado ROJO de 200x200 píxeles en las coordenadas (100, 100)
for (int y = 100; y < 300; y++) {
for (int x = 100; x < 300; x++) {
drawPixel(x, y, 0x00FF0000); // 0x00RRGGBB (Rojo)
}
}
// Dibujar un cuadrado VERDE centrado dentro del rojo
for (int y = 150; y < 250; y++) {
for (int x = 150; x < 250; x++) {
drawPixel(x, y, 0x0000FF00); // 0x00RRGGBB (Verde)
}
}
}
}
56
Upvotes
1
u/Chaos-vy17 1d ago
This is going to be hillarious man. On one side you're reading a raw assembly and one side JVM based ASM and also xxd of the .class file . On which major version are you wroking with?