about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-05-25 00:45:31 -0700
committerKartik Agaram <vc@akkartik.com>2019-05-25 00:45:31 -0700
commitbd31dbe85418b05a5f9e101525a829c48aa9bf37 (patch)
treea996945a344c22beea3f73fdcdb3686a523ebe04
parent6c03f2edab211d90405187eafa9a0243bbd64c39 (diff)
downloadmu-bd31dbe85418b05a5f9e101525a829c48aa9bf37.tar.gz
.
hoist 'Heap' variable into the std library in anticipation of the parse-array-of-ints
primitive.
-rw-r--r--subx/075array-equal.subx17
-rwxr-xr-xsubx/apps/assortbin23232 -> 23253 bytes
-rw-r--r--subx/apps/assort.subx6
-rwxr-xr-xsubx/apps/crenshaw2-1bin20401 -> 20430 bytes
-rwxr-xr-xsubx/apps/crenshaw2-1bbin20960 -> 20989 bytes
-rw-r--r--subx/apps/dquotes.subx6
-rwxr-xr-xsubx/apps/factorialbin19317 -> 19346 bytes
-rwxr-xr-xsubx/apps/handlebin20144 -> 20173 bytes
-rwxr-xr-xsubx/apps/hexbin23410 -> 23439 bytes
-rwxr-xr-xsubx/apps/packbin38042 -> 38071 bytes
-rw-r--r--subx/apps/survey.subx6
11 files changed, 17 insertions, 18 deletions
diff --git a/subx/075array-equal.subx b/subx/075array-equal.subx
index ebc446d8..24f99b0c 100644
--- a/subx/075array-equal.subx
+++ b/subx/075array-equal.subx
@@ -6,6 +6,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:
+    # 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-compare-inequal-arrays-equal-lengths/disp32
@@ -244,4 +253,12 @@ test-compare-inequal-arrays-equal-lengths:
     5d/pop-to-EBP
     c3/return
 
+== data
+
+Heap:
+  # curr
+  0/imm32
+  # limit
+  0/imm32
+
 # . . vim:nowrap:textwidth=0
diff --git a/subx/apps/assort b/subx/apps/assort
index 59ee757b..7a2c318f 100755
--- a/subx/apps/assort
+++ b/subx/apps/assort
Binary files differdiff --git a/subx/apps/assort.subx b/subx/apps/assort.subx
index 8007a274..4a23fdbd 100644
--- a/subx/apps/assort.subx
+++ b/subx/apps/assort.subx
@@ -1308,10 +1308,4 @@ _test-data-segment-end:
 Segment-size:
   0x1000/imm32/4KB
 
-Heap:
-  # curr
-  0/imm32
-  # limit
-  0/imm32
-
 # . . vim:nowrap:textwidth=0
diff --git a/subx/apps/crenshaw2-1 b/subx/apps/crenshaw2-1
index de1867ee..64fee587 100755
--- a/subx/apps/crenshaw2-1
+++ b/subx/apps/crenshaw2-1
Binary files differdiff --git a/subx/apps/crenshaw2-1b b/subx/apps/crenshaw2-1b
index b68d9d44..47dbafa0 100755
--- a/subx/apps/crenshaw2-1b
+++ b/subx/apps/crenshaw2-1b
Binary files differdiff --git a/subx/apps/dquotes.subx b/subx/apps/dquotes.subx
index 6d8b0040..db315665 100644
--- a/subx/apps/dquotes.subx
+++ b/subx/apps/dquotes.subx
@@ -1997,12 +1997,6 @@ Segment-size:
 Next-string-literal:  # tracks the next auto-generated variable name
   1/imm32
 
-Heap:
-  # curr
-  0/imm32
-  # limit
-  0/imm32
-
 # length-prefixed string containing just a single space
 Space:
     # size
diff --git a/subx/apps/factorial b/subx/apps/factorial
index 0b23aa8e..828f3064 100755
--- a/subx/apps/factorial
+++ b/subx/apps/factorial
Binary files differdiff --git a/subx/apps/handle b/subx/apps/handle
index 0bb8ff40..dd8c77c6 100755
--- a/subx/apps/handle
+++ b/subx/apps/handle
Binary files differdiff --git a/subx/apps/hex b/subx/apps/hex
index ac307015..eda84c07 100755
--- a/subx/apps/hex
+++ b/subx/apps/hex
Binary files differdiff --git a/subx/apps/pack b/subx/apps/pack
index 4c23547c..3bbfa65a 100755
--- a/subx/apps/pack
+++ b/subx/apps/pack
Binary files differdiff --git a/subx/apps/survey.subx b/subx/apps/survey.subx
index a7580ccc..43e52150 100644
--- a/subx/apps/survey.subx
+++ b/subx/apps/survey.subx
@@ -230,12 +230,6 @@ $get-or-insert-segment:abort:
 Segment-size:
   0x1000/imm32/4KB
 
-Heap:
-  # curr
-  0/imm32
-  # limit
-  0/imm32
-
 # This block of bytes gets copied to the start of the output ELF file, with
 # some fields filled in.
 # http://www.sco.com/developers/gabi/latest/ch4.eheader.html