about summary refs log tree commit diff stats
path: root/linux/mu-init-test.subx
diff options
context:
space:
mode:
Diffstat (limited to 'linux/mu-init-test.subx')
-rw-r--r--linux/mu-init-test.subx37
1 files changed, 37 insertions, 0 deletions
diff --git a/linux/mu-init-test.subx b/linux/mu-init-test.subx
new file mode 100644
index 00000000..1b2d1683
--- /dev/null
+++ b/linux/mu-init-test.subx
@@ -0,0 +1,37 @@
+# Just a test stub for mu-init.subx
+#
+# Try it out like this:
+#   $ ./translate_subx init.linux [0-9]*.subx mu-init.subx mu-init-test.subx
+#   $ ./a.elf  # should run all tests
+
+main:  # args: (addr array (addr array byte)) -> 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 4/imm32
+      7e/jump-if-<= break/disp8
+      # if (argv[1] != "test") break
+      (string-equal? *(esi+8) "test")  # => eax
+      3d/compare-eax-and 0/imm32
+      74/jump-if-= 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