5850 - driver script for translating Mu programs
This commit is contained in:
parent
dafef4e30f
commit
7ca19e4e1d
|
@ -0,0 +1,37 @@
|
|||
# Just a test stub for mu-init.subx
|
||||
#
|
||||
# Try it out like this:
|
||||
# $ ./ntranslate init.linux 0*.subx mu-init.subx mu-init-test.subx
|
||||
# $ ./a.elf # should run all tests
|
||||
|
||||
main: # args : (address array kernel-string) -> result/ebx : int
|
||||
# . prologue
|
||||
55/push-ebp
|
||||
89/<- %ebp 4/r32/esp
|
||||
# . save registers
|
||||
50/push-eax
|
||||
56/push-esi
|
||||
# esi = args
|
||||
8b/-> *(ebp+8) 6/r32/esi
|
||||
{
|
||||
# if (argc <= 1) break
|
||||
81 7/subop/compare *esi 1/imm32
|
||||
7e/jump-if-lesser-or-equal break/disp8
|
||||
# if (argv[1] != "test") break
|
||||
(kernel-string-equal? *(esi+8) "test") # => eax
|
||||
3d/compare-eax-and 0/imm32
|
||||
74/jump-if-equal break/disp8
|
||||
#
|
||||
(run-tests)
|
||||
# return *Num-test-failures
|
||||
8b/-> *Num-test-failures 3/r32/ebx
|
||||
eb/jump $main:end/disp8
|
||||
}
|
||||
$main:end:
|
||||
# . restore registers
|
||||
5e/pop-to-esi
|
||||
58/pop-to-eax
|
||||
# . epilogue
|
||||
89/<- %esp 5/r32/ebp
|
||||
5d/pop-to-ebp
|
||||
c3/return
|
|
@ -0,0 +1,25 @@
|
|||
# Initialize the minimal runtime for Mu programs.
|
||||
#
|
||||
# See translate_mu for how this file is used.
|
||||
#
|
||||
# Mu programs start at a function called 'main' with this signature:
|
||||
# fn main args: (address array kernel-string) -> exit_status/ebx : int
|
||||
# If your program doesn't need commandline arguments you can drop it:
|
||||
# fn main -> exit_status/ebx : int
|
||||
#
|
||||
# Notice that the output must be in ebx, so that the exit() syscall can pick
|
||||
# it up.
|
||||
|
||||
== code
|
||||
|
||||
Entry:
|
||||
# we don't use ebp in Entry; just initialize it
|
||||
bd/copy-to-ebp 0/imm32
|
||||
# var args/eax : (address array kernel-string)
|
||||
89/<- %eax 4/r32/esp
|
||||
# initialize the heap
|
||||
(new-segment *Heap-size Heap)
|
||||
# run Mu program
|
||||
(main %eax)
|
||||
# exit
|
||||
(syscall_exit)
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
cat $* |apps/mu > a.subx
|
||||
|
||||
./ntranslate init.linux 0*.subx mu-init.subx a.subx
|
Loading…
Reference in New Issue