This commit is contained in:
Kartik Agaram 2019-07-20 09:48:57 -07:00
parent c37b575a04
commit 47a9d22a05
8 changed files with 23 additions and 19 deletions

Binary file not shown.

View File

@ -25,10 +25,10 @@
Entry:
# initialize heap
# . Heap = new-segment(1MB)
# . Heap = new-segment(Heap-size)
# . . push args
68/push Heap/imm32
68/push 0x100000/imm32/1MB
68/push Heap-size/imm32
# . . call
e8/call new-segment/disp32
# . . discard args
@ -836,9 +836,4 @@ $write-segments:end:
5d/pop-to-EBP
c3/return
== data
Segment-size:
0x8000/imm32/4KB
# . . vim:nowrap:textwidth=0

Binary file not shown.

View File

@ -21,10 +21,10 @@
Entry:
# initialize heap
# . Heap = new-segment(1MB)
# . Heap = new-segment(Heap-size)
# . . push args
68/push Heap/imm32
68/push 0x100000/imm32/1MB
68/push Heap-size/imm32
# . . call
e8/call new-segment/disp32
# . . discard args
@ -2638,9 +2638,6 @@ test-string-length-at-start-of-slice-escaped:
== data
Segment-size:
0x8000/imm32/32KB
Next-string-literal: # tracks the next auto-generated variable name
1/imm32

Binary file not shown.

View File

@ -1,5 +1,20 @@
# some common helpers shared by phases of the SubX converter
# - buffer sizes shared by all phases
== data
# maximum memory available for allocation
Heap-size:
0x100000/imm32/1MB
# maximum size of a single segment
Segment-size:
0x8000/imm32/32KB
# maximum size of input textual stream (spanning all segments)
Input-size:
0x10000/imm32/64KB # should be enough for everyone
== code
# instruction effective address register displacement immediate
# . op subop mod rm32 base index scale r32

Binary file not shown.

View File

@ -42,10 +42,10 @@
# . 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:
# Heap = new-segment(1MB)
# Heap = new-segment(Heap-size)
# . . push args
68/push Heap/imm32
68/push 0x100000/imm32/1MB
68/push Heap-size/imm32
# . . call
e8/call new-segment/disp32
# . . discard args
@ -142,9 +142,9 @@ convert: # infile : (address buffered-file), out : (address buffered-file) -> <
68/push 0/imm32/read
68/push 0/imm32/write
89/copy 3/mod/direct 2/rm32/EDX . . . 4/r32/ESP . . # copy ESP to EDX
# var in/ESI = stream(16384 * 1)
# var in/ESI = stream(Input-size * 1)
81 5/subop/subtract 3/mod/direct 4/rm32/ESP . . . . . 0x4000/imm32 # subtract from ESP
68/push 0x4000/imm32/length
68/push Input-size/imm32
68/push 0/imm32/read
68/push 0/imm32/write
89/copy 3/mod/direct 6/rm32/ESI . . . 4/r32/ESP . . # copy ESP to ESI
@ -4503,9 +4503,6 @@ test-num-bytes-handles-imm32:
== data
Segment-size:
0x8000/imm32/4KB
# 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