about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-04-03 20:13:27 -0700
committerKartik Agaram <vc@akkartik.com>2020-05-18 00:44:46 -0700
commit94fca7058a2e2bd62393758fbb98cd3f8ace4b2a (patch)
treeb4a6b2f69ca0ae12103857d95c4748ec9c13c0e2
parentd538b29302b6b9e01c83c16bbe355615a204c95e (diff)
downloadmu-94fca7058a2e2bd62393758fbb98cd3f8ace4b2a.tar.gz
tests.subx now working
-rw-r--r--apps/tests.subx29
-rwxr-xr-xtest_apps68
2 files changed, 57 insertions, 40 deletions
diff --git a/apps/tests.subx b/apps/tests.subx
index b70e6e1a..ff09730a 100644
--- a/apps/tests.subx
+++ b/apps/tests.subx
@@ -71,7 +71,9 @@ subx-gen-run-tests:  # in: (addr buffered-file), out: (addr buffered-file)
     # pseudocode
     #   boolean tests-found = false
     #   var line: (stream byte 512)
-    #   var new-code-segment: (handle stream byte) = new-stream(Segment-size, 1)
+    #   var new-code-segment-handle: (handle stream byte)
+    #   new-stream(Segment-size, 1, new-code-stream-handle)
+    #   var new-code-segment: (addr stream byte) = lookup(new-code-stream-handle)
     #   write(new-code-segment, "\n== code\n")
     #   write(new-code-segment, "run-tests:\n")
     #   while true
@@ -100,6 +102,7 @@ subx-gen-run-tests:  # in: (addr buffered-file), out: (addr buffered-file)
     51/push-ecx
     52/push-edx
     53/push-ebx
+    56/push-esi
     57/push-edi
     # var line/ecx: (stream byte 512)
     81          5/subop/subtract    3/mod/direct    4/rm32/esp    .           .             .           .           .               0x200/imm32       # subtract from esp
@@ -113,17 +116,30 @@ subx-gen-run-tests:  # in: (addr buffered-file), out: (addr buffered-file)
     89/copy                         3/mod/direct    2/rm32/edx    .           .             .           4/r32/esp   .               .                 # copy esp to edx
     # tests-found?/ebx = false
     31/xor                          3/mod/direct    3/rm32/ebx    .           .             .           3/r32/ebx   .               .                 # clear ebx
-    # new-code-segment/edi = new-stream(Heap, Segment-size, 1)
-    # . eax = new-stream(Heap, Segment-size, 1)
+    # var new-code-stream-handle/esi: (handle stream byte)
+    68/push  0/imm32
+    68/push  0/imm32
+    89/copy                         3/mod/direct    6/rm32/esi    .           .             .           4/r32/esp   .               .                 # copy esp to esi
+    # new-stream(Heap, Segment-size, 1, new-code-stream-handle)
     # . . push args
+    56/push-esi
     68/push  1/imm32
     ff          6/subop/push        0/mod/indirect  5/rm32/.disp32            .             .           .           Segment-size/disp32               # push *Segment-size
     68/push  Heap/imm32
     # . . call
     e8/call  new-stream/disp32
     # . . discard args
-    81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0xc/imm32         # add to esp
-    # . edi = eax
+    81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0x10/imm32        # add to esp
+    # var new-code-stream/edi: (addr stream byte) = lookup(*new-code-stream-handle)
+    # . eax = lookup(*new-code-stream-handle)
+    # . . push args
+    ff          6/subop/push        1/mod/*+disp8   6/rm32/esi    .           .             .           .           4/disp8         .                 # push *(esi+4)
+    ff          6/subop/push        0/mod/indirect  6/rm32/esi    .           .             .           .           .               .                 # push *esi
+    # . . call
+    e8/call  lookup/disp32
+    # . . discard args
+    81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
+    # . new-code-stream = eax
     89/copy                         3/mod/direct    7/rm32/edi    .           .             .           0/r32/eax   .               .                 # copy eax to edi
     # write(new-code-segment, "\n== code\n")
     # . . push args
@@ -269,9 +285,10 @@ $subx-gen-run-tests:end:
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               4/imm32           # add to esp
     # . reclaim locals
-    81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0x214/imm32       # add to esp
+    81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               0x21c/imm32       # add to esp
     # . restore registers
     5f/pop-to-edi
+    5e/pop-to-esi
     5b/pop-to-ebx
     5a/pop-to-edx
     59/pop-to-ecx
diff --git a/test_apps b/test_apps
index d1c516c3..4e1f5896 100755
--- a/test_apps
+++ b/test_apps
@@ -223,7 +223,7 @@ test $NATIVE  &&  {
 
 # Phases of the self-hosted SubX translator.
 
-for phase in hex pack  # survey assort dquotes tests
+for phase in hex pack tests  # survey assort dquotes
 do
   echo $phase
   ./bootstrap translate init.$OS 0[0-8]*.subx apps/subx-params.subx apps/$phase.subx -o apps/$phase
@@ -295,45 +295,45 @@ done
 #?   apps/mu test
 #?   echo
 #? }
-
-test $NATIVE  ||  exit 0
-echo "== translating using SubX (native only)"
-
-# example programs
-
-for n in `seq 1 12`
-do
-  echo ex$n
-  ./translate_subx init.$OS apps/ex$n.subx
-  diff apps/ex$n a.elf
-done
-
-# Larger apps that use the standard library.
-
-for app in factorial crenshaw2-1 crenshaw2-1b
-do
-  echo $app
-  ./translate_subx init.$OS 0[0-8]*.subx apps/$app.subx
-  diff apps/$app a.elf
-done
-
-# Phases of the self-hosted SubX translator.
-
-for app in hex pack  # survey assort dquotes tests
-do
-  echo $app
-  ./translate_subx init.$OS 0[0-8]*.subx apps/subx-params.subx apps/$app.subx
-  diff apps/$app a.elf
-done
-
+#? 
+#? test $NATIVE  ||  exit 0
+#? echo "== translating using SubX (native only)"
+#? 
+#? # example programs
+#? 
+#? for n in `seq 1 12`
+#? do
+#?   echo ex$n
+#?   ./translate_subx init.$OS apps/ex$n.subx
+#?   diff apps/ex$n a.elf
+#? done
+#? 
+#? # Larger apps that use the standard library.
+#? 
+#? for app in factorial crenshaw2-1 crenshaw2-1b
+#? do
+#?   echo $app
+#?   ./translate_subx init.$OS 0[0-8]*.subx apps/$app.subx
+#?   diff apps/$app a.elf
+#? done
+#? 
+#? # Phases of the self-hosted SubX translator.
+#? 
+#? for app in hex survey pack assort dquotes tests
+#? do
+#?   echo $app
+#?   ./translate_subx init.$OS 0[0-8]*.subx apps/subx-params.subx apps/$app.subx
+#?   diff apps/$app a.elf
+#? done
+#? 
 #? for app in sigils calls braces
 #? do
 #?   echo $app
 #?   ./translate_subx init.$OS 0*.subx apps/subx-params.subx apps/$app.subx
 #?   diff apps/$app a.elf
 #? done
-
-# Mu translator
+#? 
+#? # Mu translator
 #? echo mu
 #? ./translate_subx init.$OS [0-9]*.subx apps/mu.subx
 #? diff apps/mu a.elf
a id='n269' href='#n269'>269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340