diff options
author | Kartik Agaram <vc@akkartik.com> | 2019-11-18 12:50:01 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2019-11-18 12:50:01 -0800 |
commit | 6488bfcf851023e1b8e84be6ebbb793f895f3d0f (patch) | |
tree | 6e279f6850a7f9c0ccf77c1d6549892c8d5fffb9 /apps | |
parent | 442fdabe305fa35bf1649a072b9a7b3b87cd50e9 (diff) | |
download | mu-6488bfcf851023e1b8e84be6ebbb793f895f3d0f.tar.gz |
5753
Binaries are now identical again. There's a little hack here that we should clean up at some point. But it requires more thought. Ordering compiler phases is hard. So far we're only at the start of the slippery slope into that abyss.
Diffstat (limited to 'apps')
-rwxr-xr-x | apps/assort | bin | 42893 -> 42893 bytes | |||
-rw-r--r-- | apps/assort.subx | 12 | ||||
-rw-r--r-- | apps/dquotes.subx | 9 | ||||
-rwxr-xr-x | apps/mu | bin | 51632 -> 51644 bytes |
4 files changed, 15 insertions, 6 deletions
diff --git a/apps/assort b/apps/assort index 6070fdc0..0cd18ecf 100755 --- a/apps/assort +++ b/apps/assort Binary files differdiff --git a/apps/assort.subx b/apps/assort.subx index e78cde41..c3a98a87 100644 --- a/apps/assort.subx +++ b/apps/assort.subx @@ -459,13 +459,13 @@ read-segments: # in : (address buffered-file), table : (address stream {string, # clear-stream(line) # read-line-buffered(in, line) # if (line->write == 0) break # end of file - # var word-slice = next-word(line) + # var word-slice = next-word-or-string(line) # if slice-empty?(word-slice) # whitespace # continue # if slice-starts-with?(word-slice, "#") # comment # continue # if slice-equal?(word-slice, "==") - # var segment-name = next-word(line) + # var segment-name = next-word-or-string(line) # segment-slot = leaky-get-or-insert-slice(table, segment-name, row-size=8) # curr-segment = *segment-slot # if curr-segment != 0 @@ -557,12 +557,12 @@ $read-segments:check0: #? # . . discard args #? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp #? # }}} - # next-word(line, word-slice) + # next-word-or-string(line, word-slice) # . . push args 52/push-edx 51/push-ecx # . . call - e8/call next-word/disp32 + e8/call next-word-or-string/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp $read-segments:check1: @@ -667,12 +667,12 @@ $read-segments:check-for-segment-header: # . if (eax == 0) goto check3 3d/compare-eax-and 0/imm32 0f 84/jump-if-equal $read-segments:regular-line/disp32 - # segment-name = next-word(line) + # segment-name = next-word-or-string(line) # . . push args 52/push-edx 51/push-ecx # . . call - e8/call next-word/disp32 + e8/call next-word-or-string/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp #? # dump segment name {{{ diff --git a/apps/dquotes.subx b/apps/dquotes.subx index 7e6318cb..8220f582 100644 --- a/apps/dquotes.subx +++ b/apps/dquotes.subx @@ -86,7 +86,16 @@ subx-dquotes: # in : (address buffered-file), out : (address buffered-file) # pseudocode: # var line : (stream byte 512) # var new-data-segment : (handle stream byte) = new-stream(Heap, Segment-size, 1) + # # write(new-data-segment, "== data\n") + # # TODO: When it was originally written dquotes ran before assort, so + # # it assumes lots of segment headers, and emits a new segment of its + # # own. We've since had to reorder the phases (see the explanation + # # for a.assort2 in ntranslate). We could clean up a.assort2 if we + # # conditionally emit the previous line. But this would require + # # teaching dquotes to parse segment headers, so maybe that's not + # # best.. + # # while true # clear-stream(line) # read-line-buffered(in, line) diff --git a/apps/mu b/apps/mu index 3d1738c8..55bb80ce 100755 --- a/apps/mu +++ b/apps/mu Binary files differ |