diff options
Diffstat (limited to 'apps/assort.subx')
-rw-r--r-- | apps/assort.subx | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/apps/assort.subx b/apps/assort.subx index 0aa18555..87a940cb 100644 --- a/apps/assort.subx +++ b/apps/assort.subx @@ -83,12 +83,12 @@ $subx-assort-main:end: cd/syscall 0x80/imm8 # data structure: -# table: (address stream {string, (address stream byte)}) (8 bytes per row) +# table: (addr stream {string, (addr stream byte)}) (8 bytes per row) # inefficient; uses sequential search for looking up segments by name -subx-assort: # in : (address buffered-file), out : (address buffered-file) +subx-assort: # in : (addr buffered-file), out : (addr buffered-file) # pseudocode: - # var table : (address stream {string, (address stream byte)} 10/rows) + # var table : (addr stream {string, (addr stream byte)} 10/rows) # read-segments(in, table) # write-segments(out, table) # @@ -97,7 +97,7 @@ subx-assort: # in : (address buffered-file), out : (address buffered-file) 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers 51/push-ecx - # var table/ecx : (ref stream {string, (address stream byte)} 80) # 10 rows * 8 bytes/row + # var table/ecx : (ref stream {string, (addr stream byte)} 80) # 10 rows * 8 bytes/row 81 5/subop/subtract 3/mod/direct 4/rm32/esp . . . . . 0x50/imm32 # subtract from esp 68/push 0x50/imm32/length 68/push 0/imm32/read @@ -450,10 +450,10 @@ test-subx-assort: 5d/pop-to-ebp c3/return -# type string_key = (address array byte) +# type string_key = (addr array byte) # beware: leaks memory (one name per segment read) -read-segments: # in : (address buffered-file), table : (address stream {string_key, (handle stream byte)}) +read-segments: # in : (addr buffered-file), table : (addr stream {string_key, (handle stream byte)}) # pseudocode: # var curr-segment : (handle stream byte) = 0 # var line : (stream byte 512) @@ -599,7 +599,7 @@ $read-segments:check-for-comment: #? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp #? # }}} # if (slice-starts-with?(word-slice, "#")) continue - # . var start/esi : (address byte) = word-slice->start + # . var start/esi : (addr byte) = word-slice->start 8b/copy 0/mod/indirect 2/rm32/edx . . . 6/r32/esi . . # copy *ecx to esi # . var c/eax : byte = *start 31/xor 3/mod/direct 0/rm32/eax . . . 0/r32/eax . . # clear eax @@ -717,7 +717,7 @@ $read-segments:check-for-segment-header: #? # . . discard args #? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp #? # }}} - # var segment-slot/eax : (address handle stream byte) = leaky-get-or-insert-slice(table, segment-name, row-size=8) + # var segment-slot/eax : (addr handle stream byte) = leaky-get-or-insert-slice(table, segment-name, row-size=8) # . . push args 68/push 8/imm32/row-size 52/push-edx @@ -843,7 +843,7 @@ $read-segments:end: 5d/pop-to-ebp c3/return -write-segments: # out : (address buffered-file), table : (address stream {string_key, (handle stream byte)}) +write-segments: # out : (addr buffered-file), table : (addr stream {string_key, (handle stream byte)}) # pseudocode: # var curr = table->data # var max = &table->data[table->write] @@ -864,15 +864,15 @@ write-segments: # out : (address buffered-file), table : (address stream {strin 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 6/r32/esi 0xc/disp8 . # copy *(ebp+12) to esi # var write/edx : int = table->write 8b/copy 0/mod/indirect 6/rm32/esi . . . 2/r32/edx . . # copy *esi to edx - # var curr/esi : (address byte) = table->data + # var curr/esi : (addr byte) = table->data 81 0/subop/add 3/mod/direct 6/rm32/esi . . . . . 0xc/imm32 # add to eax - # var max/edx : (address byte) = curr + write + # var max/edx : (addr byte) = curr + write 01/add 3/mod/direct 2/rm32/edx . . . 6/r32/esi . . # add esi to edx $write-segments:loop: # if (curr >= max) break 39/compare 3/mod/direct 6/rm32/esi . . . 2/r32/edx . . # compare esi with edx 73/jump-if-greater-or-equal-unsigned $write-segments:break/disp8 - # var stream/eax : (address stream byte) = table[i].stream + # var stream/eax : (addr stream byte) = table[i].stream 8b/copy 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 4/disp8 . # copy *(esi+4) to eax # write-stream-data(out, stream) # . . push args |