1. Kernel internals
1.1. Register allocation
EAX = TOS = Top Of DataStack EBX = = Work register ECX = = Counter / Work register EDX = = Work register ESI = DSP = Data stack pointer EDI = xxx = not assigned EBP = xxx = not assigned ESP = RSP = Return stack pointer PC = PC = Instruction Pointer CS = = Points to code segment DS = = Points to code segment ES = = Points to dictionary segment
Using ESI for the datastack is a little problem. Because the default segment is the DS segment. I would like to use the SS segment for the stacks. In realmode the segment limit is only 64k. Using two segment pointers for the stacks is a little wastefull. Using EBP instead always forces a offset, taking up a extra byte increasing the kernel size and execution speed.
2. Boot compiler
System will start with a small compiler located in the bootsector. This will load source from the floppy and will compile this. After enough code is compiled the just compiled code takes over. This is a full implementation of the 4Tron compiler. This compiler will function as system compiler, command language and operating system.
Because of its small size, the boot compiler will stay resident. This makes a instant restart possible of the system during debugging without going through the slow BIOS boot each time.