about summary refs log tree commit diff stats
path: root/subx/apps
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-05-25 23:47:49 -0700
committerKartik Agaram <vc@akkartik.com>2019-05-25 23:47:49 -0700
commit561028444397d2722130ef3bbf4a403acf7964b4 (patch)
tree1917d966a501d5a24aa51ddf08c9d1a5c5dd2c65 /subx/apps
parentbd31dbe85418b05a5f9e101525a829c48aa9bf37 (diff)
downloadmu-561028444397d2722130ef3bbf4a403acf7964b4.tar.gz
new primitive: parse-array-of-ints
Mostly for tests. For every new type we want to compare in a test, we're
now going to start using some primitive that can parse its value from string. In this manner we can get syntax for literals in machine code.

Open question: parsing aggregates of aggregates. Like an array of structs.

This is the first time we allocate from the heap in standard library tests.
So we now need to start initializing the heap in all our apps.
Diffstat (limited to 'subx/apps')
-rwxr-xr-xsubx/apps/assortbin23253 -> 23949 bytes
-rwxr-xr-xsubx/apps/crenshaw2-1bin20430 -> 21147 bytes
-rw-r--r--subx/apps/crenshaw2-1.subx9
-rwxr-xr-xsubx/apps/crenshaw2-1bbin20989 -> 21706 bytes
-rw-r--r--subx/apps/crenshaw2-1b.subx9
-rwxr-xr-xsubx/apps/factorialbin19346 -> 20063 bytes
-rw-r--r--subx/apps/factorial.subx9
-rwxr-xr-xsubx/apps/handlebin20173 -> 20869 bytes
-rwxr-xr-xsubx/apps/hexbin23439 -> 24156 bytes
-rw-r--r--subx/apps/hex.subx9
-rwxr-xr-xsubx/apps/packbin38071 -> 38788 bytes
-rw-r--r--subx/apps/pack.subx9
12 files changed, 45 insertions, 0 deletions
diff --git a/subx/apps/assort b/subx/apps/assort
index 7a2c318f..dc280d0a 100755
--- a/subx/apps/assort
+++ b/subx/apps/assort
Binary files differdiff --git a/subx/apps/crenshaw2-1 b/subx/apps/crenshaw2-1
index 64fee587..15856474 100755
--- a/subx/apps/crenshaw2-1
+++ b/subx/apps/crenshaw2-1
Binary files differdiff --git a/subx/apps/crenshaw2-1.subx b/subx/apps/crenshaw2-1.subx
index 2f1fec9e..5ec2e829 100644
--- a/subx/apps/crenshaw2-1.subx
+++ b/subx/apps/crenshaw2-1.subx
@@ -31,6 +31,15 @@
 # . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes
 
 Entry:  # run tests if necessary, call 'compile' if not
+    # initialize heap
+    # . Heap = new-segment(64KB)
+    # . . push args
+    68/push  Heap/imm32
+    68/push  0x10000/imm32/64KB
+    # . . call
+    e8/call  new-segment/disp32
+    # . . discard args
+    81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
 
 #?     # for debugging: run a single test; don't bother setting status code
 #?     e8/call test-get-num-aborts-on-non-digit-in-Look/disp32
diff --git a/subx/apps/crenshaw2-1b b/subx/apps/crenshaw2-1b
index 47dbafa0..ba29e49c 100755
--- a/subx/apps/crenshaw2-1b
+++ b/subx/apps/crenshaw2-1b
Binary files differdiff --git a/subx/apps/crenshaw2-1b.subx b/subx/apps/crenshaw2-1b.subx
index 8dee0dbc..4f350cf4 100644
--- a/subx/apps/crenshaw2-1b.subx
+++ b/subx/apps/crenshaw2-1b.subx
@@ -31,6 +31,15 @@
 # . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes
 
 Entry:  # run tests if necessary, call 'compile' if not
+    # initialize heap
+    # . Heap = new-segment(64KB)
+    # . . push args
+    68/push  Heap/imm32
+    68/push  0x10000/imm32/64KB
+    # . . call
+    e8/call  new-segment/disp32
+    # . . discard args
+    81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
 
 #?     # for debugging: run a single test; don't bother setting status code
 #?     e8/call test-get-num-reads-single-digit/disp32
diff --git a/subx/apps/factorial b/subx/apps/factorial
index 828f3064..02c3a2d4 100755
--- a/subx/apps/factorial
+++ b/subx/apps/factorial
Binary files differdiff --git a/subx/apps/factorial.subx b/subx/apps/factorial.subx
index 20b0a4fe..a9f88363 100644
--- a/subx/apps/factorial.subx
+++ b/subx/apps/factorial.subx
@@ -19,6 +19,15 @@
 # . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes
 
 Entry:  # run tests if necessary, compute `factorial(5)` if not
+    # initialize heap
+    # . Heap = new-segment(64KB)
+    # . . push args
+    68/push  Heap/imm32
+    68/push  0x10000/imm32/64KB
+    # . . call
+    e8/call  new-segment/disp32
+    # . . discard args
+    81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
 
 #?     # for debugging: run a single test; don't bother setting status code
 #?     e8/call test-get-num-reads-single-digit/disp32
diff --git a/subx/apps/handle b/subx/apps/handle
index dd8c77c6..ea47b0d4 100755
--- a/subx/apps/handle
+++ b/subx/apps/handle
Binary files differdiff --git a/subx/apps/hex b/subx/apps/hex
index eda84c07..b70b32c6 100755
--- a/subx/apps/hex
+++ b/subx/apps/hex
Binary files differdiff --git a/subx/apps/hex.subx b/subx/apps/hex.subx
index 3730351f..6b82a1e9 100644
--- a/subx/apps/hex.subx
+++ b/subx/apps/hex.subx
@@ -18,6 +18,15 @@
 # . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes
 
 Entry:  # run tests if necessary, convert stdin if not
+    # initialize heap
+    # . Heap = new-segment(64KB)
+    # . . push args
+    68/push  Heap/imm32
+    68/push  0x10000/imm32/64KB
+    # . . call
+    e8/call  new-segment/disp32
+    # . . discard args
+    81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
 
 #?     # for debugging: run a single test
 #?     e8/call test-convert-next-octet-aborts-on-single-hex-byte/disp32
diff --git a/subx/apps/pack b/subx/apps/pack
index 3bbfa65a..3c0c501e 100755
--- a/subx/apps/pack
+++ b/subx/apps/pack
Binary files differdiff --git a/subx/apps/pack.subx b/subx/apps/pack.subx
index c035c361..74c21e88 100644
--- a/subx/apps/pack.subx
+++ b/subx/apps/pack.subx
@@ -19,6 +19,15 @@
 # . 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes
 
 Entry:  # run tests if necessary, convert stdin if not
+    # initialize heap
+    # . Heap = new-segment(64KB)
+    # . . push args
+    68/push  Heap/imm32
+    68/push  0x10000/imm32/64KB
+    # . . call
+    e8/call  new-segment/disp32
+    # . . discard args
+    81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
 
     # for debugging: run a single test
 #?     e8/call test-emit-non-number-with-all-hex-digits-and-metadata/disp32