1 # Initialize the minimal runtime for Mu programs. 2 # 3 # See translate_mu for how this file is used. 4 # 5 # Mu programs start at a function called 'main' with this signature: 6 # fn main args: (address array kernel-string) -> exit_status/ebx: int 7 # If your program doesn't need commandline arguments you can drop it: 8 # fn main -> exit_status/ebx: int 9 # 10 # Notice that the output must be in ebx, so that the exit() syscall can pick 11 # it up. 12 13 == code 14 15 Entry: 16 # we don't use ebp in Entry; just initialize it 17 bd/copy-to-ebp 0/imm32 18 # var args/eax: (address array kernel-string) 19 89/<- %eax 4/r32/esp 20 # initialize the heap 21 (new-segment *Heap-size Heap) 22 # run Mu program 23 (main %eax) 24 # exit 25 (syscall_exit)