about summary refs log tree commit diff stats
path: root/subx
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2019-07-22 01:09:06 -0700
committerKartik Agaram <vc@akkartik.com>2019-07-22 01:12:45 -0700
commitf2d63490706bb042ccc5f99104b17c380246cb93 (patch)
tree2333ef5a6c59d524b65dd77cb7b47b9c8f1067fa /subx
parent490cc2021c71499dd3630f699a23843c3b7b532c (diff)
downloadmu-f2d63490706bb042ccc5f99104b17c380246cb93.tar.gz
5442
We can now translate layers 49-72 using the self-hosted translator.

The translator has now demonstrated translation over 4k lines. Most verbose
phase output is 325KB, even if the final binary is 15KB.

Emulation is too slow now, so I'm back to debug by print on a Linux machine.
Diffstat (limited to 'subx')
-rwxr-xr-xsubx/apps/assortbin34326 -> 34326 bytes
-rw-r--r--subx/apps/assort.subx72
-rwxr-xr-xsubx/apps/dquotesbin40882 -> 40882 bytes
-rwxr-xr-xsubx/apps/hexbin27743 -> 36881 bytes
-rwxr-xr-xsubx/apps/packbin46978 -> 46978 bytes
-rw-r--r--subx/apps/subx-common.subx4
-rwxr-xr-xsubx/apps/surveybin42976 -> 42976 bytes
-rwxr-xr-xsubx/apps/testsbin33138 -> 33138 bytes
8 files changed, 74 insertions, 2 deletions
diff --git a/subx/apps/assort b/subx/apps/assort
index 61aadb87..01813914 100755
--- a/subx/apps/assort
+++ b/subx/apps/assort
Binary files differdiff --git a/subx/apps/assort.subx b/subx/apps/assort.subx
index 911cbad4..801e52d0 100644
--- a/subx/apps/assort.subx
+++ b/subx/apps/assort.subx
@@ -109,6 +109,15 @@ convert:  # in : (address buffered-file), out : (address buffered-file) -> <void
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               4/imm32           # add to ESP
 $convert:read:
+#?     # print("read\n") {{{
+#?     # . . push args
+#?     68/push  "read\n"/imm32
+#?     68/push  2/imm32/stderr
+#?     # . . call
+#?     e8/call  write/disp32
+#?     # . . discard args
+#?     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
+#?     # }}}
     # read-segments(in, table)
     # . . push args
     51/push-ECX
@@ -118,6 +127,15 @@ $convert:read:
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
 $convert:write:
+#?     # print("write\n") {{{
+#?     # . . push args
+#?     68/push  "write\n"/imm32
+#?     68/push  2/imm32/stderr
+#?     # . . call
+#?     e8/call  write/disp32
+#?     # . . discard args
+#?     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
+#?     # }}}
     # write-segments(out, table)
     # . . push args
     51/push-ECX
@@ -550,6 +568,15 @@ $read-segments:check0:
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
 $read-segments:check1:
+#?     # print("check1\n") {{{
+#?     # . . push args
+#?     68/push  "check1\n"/imm32
+#?     68/push  2/imm32/stderr
+#?     # . . call
+#?     e8/call  write/disp32
+#?     # . . discard args
+#?     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
+#?     # }}}
     # if (slice-empty?(word-slice)) continue
     # . EAX = slice-empty?(word-slice)
     # . . push args
@@ -562,6 +589,15 @@ $read-segments:check1:
     3d/compare-EAX-and  0/imm32
     0f 85/jump-if-not-equal  $read-segments:loop/disp32
 $read-segments:check-for-comment:
+#?     # print("check for comment\n") {{{
+#?     # . . push args
+#?     68/push  "check for comment\n"/imm32
+#?     68/push  2/imm32/stderr
+#?     # . . call
+#?     e8/call  write/disp32
+#?     # . . discard args
+#?     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
+#?     # }}}
     # if (slice-starts-with?(word-slice, "#")) continue
     # . start/ESI = word-slice->start
     8b/copy                         0/mod/indirect  2/rm32/EDX    .           .             .           6/r32/ESI   .               .                 # copy *ECX to ESI
@@ -572,6 +608,15 @@ $read-segments:check-for-comment:
     3d/compare-EAX-and  0x23/imm32/hash
     0f 84/jump-if-equal  $read-segments:loop/disp32
 $read-segments:check-for-segment-header:
+#?     # print("check for segment header\n") {{{
+#?     # . . push args
+#?     68/push  "check for segment header\n"/imm32
+#?     68/push  2/imm32/stderr
+#?     # . . call
+#?     e8/call  write/disp32
+#?     # . . discard args
+#?     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
+#?     # }}}
 #?     # dump word-slice {{{
 #?     # . write(2/stderr, "AA: ")
 #?     # . . push args
@@ -710,6 +755,15 @@ $read-segments:check-for-segment-header:
     89/copy                         0/mod/indirect  0/rm32/EAX    .           .             .           3/r32/EBX   .               .                 # copy EBX to *EAX
     # fall through
 $read-segments:regular-line:
+#?     # print("regular line\n") {{{
+#?     # . . push args
+#?     68/push  "regular line\n"/imm32
+#?     68/push  2/imm32/stderr
+#?     # . . call
+#?     e8/call  write/disp32
+#?     # . . discard args
+#?     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
+#?     # }}}
 #?     # dump line {{{
 #?     # . write(2/stderr, "regular line: ")
 #?     # . . push args
@@ -750,6 +804,15 @@ $read-segments:regular-line:
     e8/call  rewind-stream/disp32
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               4/imm32           # add to ESP
+#?     # print("write stream\n") {{{
+#?     # . . push args
+#?     68/push  "write stream\n"/imm32
+#?     68/push  2/imm32/stderr
+#?     # . . call
+#?     e8/call  write/disp32
+#?     # . . discard args
+#?     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
+#?     # }}}
     # write-stream(curr-segment, line)
     # . . push args
     51/push-ECX
@@ -759,6 +822,15 @@ $read-segments:regular-line:
     # . . discard args
     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
     # loop
+#?     # print("loop\n") {{{
+#?     # . . push args
+#?     68/push  "loop\n"/imm32
+#?     68/push  2/imm32/stderr
+#?     # . . call
+#?     e8/call  write/disp32
+#?     # . . discard args
+#?     81          0/subop/add         3/mod/direct    4/rm32/ESP    .           .             .           .           .               8/imm32           # add to ESP
+#?     # }}}
     e9/jump  $read-segments:loop/disp32
 $read-segments:break:
 $read-segments:end:
diff --git a/subx/apps/dquotes b/subx/apps/dquotes
index 3bcefaf0..be36b0c4 100755
--- a/subx/apps/dquotes
+++ b/subx/apps/dquotes
Binary files differdiff --git a/subx/apps/hex b/subx/apps/hex
index f3ad62f1..8b903e5d 100755
--- a/subx/apps/hex
+++ b/subx/apps/hex
Binary files differdiff --git a/subx/apps/pack b/subx/apps/pack
index 737d0c33..792c30ba 100755
--- a/subx/apps/pack
+++ b/subx/apps/pack
Binary files differdiff --git a/subx/apps/subx-common.subx b/subx/apps/subx-common.subx
index 962053f7..413edc9a 100644
--- a/subx/apps/subx-common.subx
+++ b/subx/apps/subx-common.subx
@@ -9,11 +9,11 @@ Heap-size:
 
 # maximum size of a single segment
 Segment-size:
-  0x8000/imm32/32KB
+  0x40000/imm32/256KB
 
 # maximum size of input textual stream (spanning all segments)
 Input-size:
-  0x10000/imm32/64KB  # should be enough for everyone
+  0x80000/imm32/512KB
 
 == code
 #   instruction                     effective address                                                   register    displacement    immediate
diff --git a/subx/apps/survey b/subx/apps/survey
index 299ea71c..308c6ee8 100755
--- a/subx/apps/survey
+++ b/subx/apps/survey
Binary files differdiff --git a/subx/apps/tests b/subx/apps/tests
index 00201e83..20375e67 100755
--- a/subx/apps/tests
+++ b/subx/apps/tests
Binary files differ