diff options
Diffstat (limited to '093array-equal.subx')
-rw-r--r-- | 093array-equal.subx | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/093array-equal.subx b/093array-equal.subx index f10a9463..eba1fe8a 100644 --- a/093array-equal.subx +++ b/093array-equal.subx @@ -5,7 +5,7 @@ # . op subop mod rm32 base index scale r32 # . 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 -array-equal?: # a : (address array int), b : (address array int) -> eax : boolean +array-equal?: # a : (addr array int), b : (addr array int) -> eax : boolean # pseudocode: # lena = a->length # if (lena != b->length) return false @@ -46,9 +46,9 @@ $array-equal?:lengths: # if (lena != b->length) return false 39/compare 0/mod/indirect 7/rm32/edi . . . 2/r32/edx . . # compare *edi and edx 75/jump-if-not-equal $array-equal?:false/disp8 - # var curra/esi : (address byte) = a->data + # var curra/esi : (addr byte) = a->data 81 0/subop/add 3/mod/direct 6/rm32/esi . . . . . 4/imm32 # add to esi - # var currb/edi : (address byte) = b->data + # var currb/edi : (addr byte) = b->data 81 0/subop/add 3/mod/direct 7/rm32/edi . . . . . 4/imm32 # add to edi # var i/ecx : int = 0 31/xor 3/mod/direct 1/rm32/ecx . . . 1/r32/ecx . . # clear ecx @@ -230,7 +230,7 @@ test-compare-inequal-arrays-equal-lengths: 5d/pop-to-ebp c3/return -parse-array-of-ints: # ad : (address allocation-descriptor), s : (address string) -> result/eax : (handle array int) +parse-array-of-ints: # ad : (addr allocation-descriptor), s : (addr string) -> result/eax : (handle array int) # pseudocode # end = &s->data[s->length] # curr = s->data @@ -266,9 +266,9 @@ parse-array-of-ints: # ad : (address allocation-descriptor), s : (address strin 57/push-edi # esi = s 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 6/r32/esi 0xc/disp8 . # copy *(ebp+12) to esi - # var curr/ecx : (address byte) = s->data + # var curr/ecx : (addr byte) = s->data 8d/copy-address 1/mod/*+disp8 6/rm32/esi . . . 1/r32/ecx 4/disp8 . # copy esi+4 to ecx - # var end/edx : (address byte) = &s->data[s->length] + # var end/edx : (addr byte) = &s->data[s->length] # . edx = s->length 8b/copy 0/mod/indirect 6/rm32/esi . . . 2/r32/edx . . # copy *esi to edx # . edx += curr @@ -334,7 +334,7 @@ $parse-array-of-ints:pass2: 51/push-ecx # . bookmark 89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx - # var out/ebx : (address byte) = result->data + # var out/ebx : (addr byte) = result->data 8d/copy-address 1/mod/*+disp8 0/rm32/eax . . . 3/r32/ebx 4/disp8 . # copy eax+4 to ebx $parse-array-of-ints:loop2: # if (slice->start >= end) break @@ -536,7 +536,7 @@ test-parse-array-of-ints-extra-whitespace: # helper for later tests # compare an array with a string representation of an array literal -check-array-equal: # a : (address array int), expected : (address string), msg : (address string) +check-array-equal: # a : (addr array int), expected : (addr string), msg : (addr string) # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp |