From 333525360b22f3d3ea31db46a4d2f1b4edbfebdb Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Mon, 26 Aug 2019 11:55:26 -0700 Subject: 5592 - switch register names to lowercase --- html/074print-int-decimal.subx.html | 148 ++++++++++++++++++------------------ 1 file changed, 74 insertions(+), 74 deletions(-) (limited to 'html/074print-int-decimal.subx.html') diff --git a/html/074print-int-decimal.subx.html b/html/074print-int-decimal.subx.html index df3446ee..6a78c5da 100644 --- a/html/074print-int-decimal.subx.html +++ b/html/074print-int-decimal.subx.html @@ -72,21 +72,21 @@ if ('onhashchange' in window) { 11 # 12 # pseudocode: 13 # push sentinel - 14 # EAX = abs(n) + 14 # eax = abs(n) 15 # while true - 16 # sign-extend EAX into EDX - 17 # EAX, EDX = EAX/10, EAX%10 - 18 # EDX += '0' - 19 # push EDX - 20 # if (EAX == 0) break + 16 # sign-extend eax into edx + 17 # eax, edx = eax/10, eax%10 + 18 # edx += '0' + 19 # push edx + 20 # if (eax == 0) break 21 # if n < 0 22 # push '-' 23 # w = out->write 24 # curr = &out->data[out->write] 25 # max = &out->data[out->length] 26 # while true - 27 # pop into EAX - 28 # if (EAX == sentinel) break + 27 # pop into eax + 28 # if (eax == sentinel) break 29 # if (curr >= max) abort 30 # *curr = AL 31 # ++curr @@ -97,81 +97,81 @@ if ('onhashchange' in window) { 36 # require specific registers in x86) 37 # 38 # . prolog - 39 55/push-EBP - 40 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . . # copy ESP to EBP + 39 55/push-ebp + 40 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp 41 # . save registers - 42 50/push-EAX - 43 51/push-ECX - 44 52/push-EDX - 45 53/push-EBX - 46 57/push-EDI - 47 # ten/ECX = 10 - 48 b9/copy-to-ECX 0xa/imm32 + 42 50/push-eax + 43 51/push-ecx + 44 52/push-edx + 45 53/push-ebx + 46 57/push-edi + 47 # ten/ecx = 10 + 48 b9/copy-to-ecx 0xa/imm32 49 # push sentinel 50 68/push 0/imm32/sentinel - 51 # EAX = abs(n) - 52 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 0/r32/EAX 0xc/disp8 . # copy *(EBP+12) to EAX - 53 3d/compare-EAX-with 0/imm32 + 51 # eax = abs(n) + 52 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax + 53 3d/compare-eax-with 0/imm32 54 7d/jump-if-greater-or-equal $print-int32-decimal:read-loop/disp8 55 $print-int32-decimal:negative: - 56 f7 3/subop/negate 3/mod/direct 0/rm32/EAX . . . . . . # negate EAX + 56 f7 3/subop/negate 3/mod/direct 0/rm32/eax . . . . . . # negate eax 57 $print-int32-decimal:read-loop: - 58 # EAX, EDX = EAX / 10, EAX % 10 - 59 99/sign-extend-EAX-into-EDX - 60 f7 7/subop/idiv 3/mod/direct 1/rm32/ECX . . . . . . # divide EDX:EAX by ECX, storing quotient in EAX and remainder in EDX - 61 # EDX += '0' - 62 81 0/subop/add 3/mod/direct 2/rm32/EDX . . . . . 0x30/imm32 # add to EDX - 63 # push EDX - 64 52/push-EDX - 65 # if (EAX == 0) break - 66 3d/compare-EAX-and 0/imm32 + 58 # eax, edx = eax / 10, eax % 10 + 59 99/sign-extend-eax-into-edx + 60 f7 7/subop/idiv 3/mod/direct 1/rm32/ecx . . . . . . # divide edx:eax by ecx, storing quotient in eax and remainder in edx + 61 # edx += '0' + 62 81 0/subop/add 3/mod/direct 2/rm32/edx . . . . . 0x30/imm32 # add to edx + 63 # push edx + 64 52/push-edx + 65 # if (eax == 0) break + 66 3d/compare-eax-and 0/imm32 67 7f/jump-if-greater $print-int32-decimal:read-loop/disp8 68 $print-int32-decimal:read-break: 69 # if (n < 0) push('-') - 70 81 7/subop/compare 1/mod/*+disp8 5/rm32/EBP . . . . 0xc/disp8 0/imm32 # compare *(EBP+12) + 70 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 0/imm32 # compare *(ebp+12) 71 7d/jump-if-greater-or-equal $print-int32-decimal:write/disp8 72 $print-int32-decimal:push-negative: 73 68/push 0x2d/imm32/- 74 $print-int32-decimal:write: - 75 # EDI = out - 76 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 7/r32/EDI 8/disp8 . # copy *(EBP+8) to EDI - 77 # w/EDX = out->write - 78 8b/copy 0/mod/indirect 7/rm32/EDI . . . 2/r32/EDX . . # copy *EDI to EDX - 79 # curr/ECX = &out->data[out->write] - 80 8d/copy-address 1/mod/*+disp8 4/rm32/sib 7/base/EDI 2/index/EDX . 1/r32/ECX 0xc/disp8 . # copy EBX+EDX+12 to ECX - 81 # max/EBX = &out->data[out->length] - 82 8b/copy 1/mod/*+disp8 7/rm32/EDI . . . 3/r32/EBX 8/disp8 . # copy *(EDI+8) to EBX - 83 8d/copy-address 1/mod/*+disp8 4/rm32/sib 7/base/EDI 3/index/EBX . 3/r32/EBX 0xc/disp8 . # copy EDI+EBX+12 to EBX + 75 # edi = out + 76 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 7/r32/edi 8/disp8 . # copy *(ebp+8) to edi + 77 # w/edx = out->write + 78 8b/copy 0/mod/indirect 7/rm32/edi . . . 2/r32/edx . . # copy *edi to edx + 79 # curr/ecx = &out->data[out->write] + 80 8d/copy-address 1/mod/*+disp8 4/rm32/sib 7/base/edi 2/index/edx . 1/r32/ecx 0xc/disp8 . # copy ebx+edx+12 to ecx + 81 # max/ebx = &out->data[out->length] + 82 8b/copy 1/mod/*+disp8 7/rm32/edi . . . 3/r32/ebx 8/disp8 . # copy *(edi+8) to ebx + 83 8d/copy-address 1/mod/*+disp8 4/rm32/sib 7/base/edi 3/index/ebx . 3/r32/ebx 0xc/disp8 . # copy edi+ebx+12 to ebx 84 $print-int32-decimal:write-loop: - 85 # pop into EAX - 86 58/pop-to-EAX - 87 # if (EAX == sentinel) break - 88 3d/compare-EAX-and 0/imm32/sentinel + 85 # pop into eax + 86 58/pop-to-eax + 87 # if (eax == sentinel) break + 88 3d/compare-eax-and 0/imm32/sentinel 89 74/jump-if-equal $print-int32-decimal:write-break/disp8 90 # if (curr >= max) abort - 91 39/compare 3/mod/direct 1/rm32/ECX . . . 3/r32/EBX . . # compare ECX with EBX + 91 39/compare 3/mod/direct 1/rm32/ecx . . . 3/r32/ebx . . # compare ecx with ebx 92 73/jump-if-greater-or-equal-unsigned $print-int32-decimal:abort/disp8 93 $print-int32-decimal:write-char: 94 # *curr = AL - 95 88/copy-byte 0/mod/indirect 1/rm32/ECX . . . 0/r32/AL . . # copy AL to byte at *ECX + 95 88/copy-byte 0/mod/indirect 1/rm32/ecx . . . 0/r32/AL . . # copy AL to byte at *ecx 96 # ++curr - 97 41/increment-ECX + 97 41/increment-ecx 98 # ++w - 99 42/increment-EDX + 99 42/increment-edx 100 eb/jump $print-int32-decimal:write-loop/disp8 101 $print-int32-decimal:write-break: 102 # out->write = w -103 89/copy 0/mod/indirect 7/rm32/EDI . . . 2/r32/EDX . . # copy EDX to *EDI +103 89/copy 0/mod/indirect 7/rm32/edi . . . 2/r32/edx . . # copy edx to *edi 104 $print-int32-decimal:end: 105 # . restore registers -106 5f/pop-to-EDI -107 5b/pop-to-EBX -108 5a/pop-to-EDX -109 59/pop-to-ECX -110 58/pop-to-EAX +106 5f/pop-to-edi +107 5b/pop-to-ebx +108 5a/pop-to-edx +109 59/pop-to-ecx +110 58/pop-to-eax 111 # . epilog -112 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . . # copy EBP to ESP -113 5d/pop-to-EBP +112 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp +113 5d/pop-to-ebp 114 c3/return 115 116 $print-int32-decimal:abort: @@ -182,10 +182,10 @@ if ('onhashchange' in window) { 121 # . . call 122 e8/call _write/disp32 123 # . . discard args -124 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP +124 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 125 # . syscall(exit, 1) -126 bb/copy-to-EBX 1/imm32 -127 b8/copy-to-EAX 1/imm32/exit +126 bb/copy-to-ebx 1/imm32 +127 b8/copy-to-eax 1/imm32/exit 128 cd/syscall 0x80/imm8 129 # never gets here 130 @@ -198,7 +198,7 @@ if ('onhashchange' in window) { 137 # . . call 138 e8/call clear-stream/disp32 139 # . . discard args -140 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP +140 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 141 # print-int32-decimal(_test-stream, 9) 142 # . . push args 143 68/push 9/imm32 @@ -206,7 +206,7 @@ if ('onhashchange' in window) { 145 # . . call 146 e8/call print-int32-decimal/disp32 147 # . . discard args -148 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP +148 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 149 # check-stream-equal(_test-stream, "9", msg) 150 # . . push args 151 68/push "F - test-print-int32-decimal"/imm32 @@ -215,7 +215,7 @@ if ('onhashchange' in window) { 154 # . . call 155 e8/call check-stream-equal/disp32 156 # . . discard args -157 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP +157 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 158 # . end 159 c3/return 160 @@ -228,7 +228,7 @@ if ('onhashchange' in window) { 167 # . . call 168 e8/call clear-stream/disp32 169 # . . discard args -170 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP +170 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 171 # print-int32-decimal(_test-stream, 0) 172 # . . push args 173 68/push 0/imm32 @@ -236,7 +236,7 @@ if ('onhashchange' in window) { 175 # . . call 176 e8/call print-int32-decimal/disp32 177 # . . discard args -178 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP +178 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 179 # check-stream-equal(_test-stream, "0", msg) 180 # . . push args 181 68/push "F - test-print-int32-decimal-zero"/imm32 @@ -245,7 +245,7 @@ if ('onhashchange' in window) { 184 # . . call 185 e8/call check-stream-equal/disp32 186 # . . discard args -187 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP +187 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 188 # . end 189 c3/return 190 @@ -258,7 +258,7 @@ if ('onhashchange' in window) { 197 # . . call 198 e8/call clear-stream/disp32 199 # . . discard args -200 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP +200 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 201 # print-int32-decimal(_test-stream, 10) 202 # . . push args 203 68/push 0xa/imm32 @@ -266,7 +266,7 @@ if ('onhashchange' in window) { 205 # . . call 206 e8/call print-int32-decimal/disp32 207 # . . discard args -208 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP +208 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 209 # check-stream-equal(_test-stream, "10", msg) 210 # . . push args 211 68/push "F - test-print-int32-decimal-multiple-digits"/imm32 @@ -275,7 +275,7 @@ if ('onhashchange' in window) { 214 # . . call 215 e8/call check-stream-equal/disp32 216 # . . discard args -217 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP +217 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 218 # . end 219 c3/return 220 @@ -288,7 +288,7 @@ if ('onhashchange' in window) { 227 # . . call 228 e8/call clear-stream/disp32 229 # . . discard args -230 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP +230 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 231 # print-int32-decimal(_test-stream, -9) 232 # . . push args 233 68/push -9/imm32 @@ -296,7 +296,7 @@ if ('onhashchange' in window) { 235 # . . call 236 e8/call print-int32-decimal/disp32 237 # . . discard args -238 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP +238 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 239 +-- 26 lines: #? # dump _test-stream --------------------------------------------------------------------------------------------------------------------- 265 # check-stream-equal(_test-stream, "-9", msg) 266 # . . push args @@ -306,7 +306,7 @@ if ('onhashchange' in window) { 270 # . . call 271 e8/call check-stream-equal/disp32 272 # . . discard args -273 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP +273 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 274 # . end 275 c3/return 276 @@ -319,7 +319,7 @@ if ('onhashchange' in window) { 283 # . . call 284 e8/call clear-stream/disp32 285 # . . discard args -286 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32 # add to ESP +286 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 287 # print-int32-decimal(_test-stream, -10) 288 # . . push args 289 68/push -0xa/imm32 @@ -327,7 +327,7 @@ if ('onhashchange' in window) { 291 # . . call 292 e8/call print-int32-decimal/disp32 293 # . . discard args -294 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 8/imm32 # add to ESP +294 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 295 # check-stream-equal(_test-stream, "-10", msg) 296 # . . push args 297 68/push "F - test-print-int32-decimal-negative-multiple-digits"/imm32 @@ -336,7 +336,7 @@ if ('onhashchange' in window) { 300 # . . call 301 e8/call check-stream-equal/disp32 302 # . . discard args -303 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32 # add to ESP +303 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 304 # . end 305 c3/return 306 -- cgit 1.4.1-2-gfad0