From 4a4a392dc7c81b301ad6b760525c5549f2f6644c Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Fri, 20 Sep 2019 11:19:30 -0700 Subject: 5683 --- html/apps/pack.subx.html | 360 +++++++++++++++++++++++------------------------ 1 file changed, 180 insertions(+), 180 deletions(-) (limited to 'html/apps/pack.subx.html') diff --git a/html/apps/pack.subx.html b/html/apps/pack.subx.html index 05b04d4d..86267ee6 100644 --- a/html/apps/pack.subx.html +++ b/html/apps/pack.subx.html @@ -65,7 +65,7 @@ if ('onhashchange' in window) { 3 # uses are left untouched. 4 # 5 # To run: - 6 # $ ./subx translate init.linux 0*.subx apps/subx-common.subx apps/pack.subx -o apps/pack + 6 # $ ./subx translate init.linux 0*.subx apps/subx-params.subx apps/pack.subx -o apps/pack 7 # $ echo '05/add-to-eax 0x20/imm32' |./subx run apps/pack 8 # Expected output: 9 # 05 20 00 00 00 # 05/add-to-eax 0x20/imm32 @@ -85,20 +85,20 @@ if ('onhashchange' in window) { 23 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp 24 25 # initialize heap - 26 # . Heap = new-segment(64KB) + 26 # . Heap = new-segment(Heap-size) 27 # . . push args - 28 68/push Heap/imm32 - 29 68/push 0x10000/imm32/64KB + 28 68/push Heap/imm32 + 29 68/push Heap-size/imm32 30 # . . call 31 e8/call new-segment/disp32 32 # . . discard args 33 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 34 35 # - if argc > 1 and argv[1] == "test", then return run_tests() - 36 # if (argc <= 1) goto run-main + 36 # if (argc <= 1) goto interactive 37 81 7/subop/compare 1/mod/*+disp8 5/rm32/ebp . . . . 0/disp8 1/imm32 # compare *ebp - 38 7e/jump-if-lesser-or-equal $run-main/disp8 - 39 # if (!kernel-string-equal?(argv[1], "test")) goto run-main + 38 7e/jump-if-lesser-or-equal $subx-pack-main:interactive/disp8 + 39 # if (!kernel-string-equal?(argv[1], "test")) goto interactive 40 # . eax = kernel-string-equal?(argv[1], "test") 41 # . . push args 42 68/push "test"/imm32 @@ -107,15 +107,15 @@ if ('onhashchange' in window) { 45 e8/call kernel-string-equal?/disp32 46 # . . discard args 47 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - 48 # . if (eax == 0) goto run-main + 48 # . if (eax == 0) goto interactive 49 3d/compare-eax-and 0/imm32 - 50 74/jump-if-equal $run-main/disp8 + 50 74/jump-if-equal $subx-pack-main:interactive/disp8 51 # run-tests() 52 e8/call run-tests/disp32 53 # syscall(exit, *Num-test-failures) 54 8b/copy 0/mod/indirect 5/rm32/.disp32 . . 3/r32/ebx Num-test-failures/disp32 # copy *Num-test-failures to ebx - 55 eb/jump $main:end/disp8 - 56 $run-main: + 55 eb/jump $subx-pack-main:end/disp8 + 56 $subx-pack-main:interactive: 57 # - otherwise convert stdin 58 # var ed/eax : exit-descriptor 59 81 5/subop/subtract 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # subtract from esp @@ -123,19 +123,19 @@ if ('onhashchange' in window) { 61 # configure ed to really exit() 62 # . ed->target = 0 63 c7 0/subop/copy 0/mod/direct 0/rm32/eax . . . . . 0/imm32 # copy to *eax - 64 # convert(Stdin, Stdout, Stderr, ed) + 64 # subx-pack(Stdin, Stdout, Stderr, ed) 65 # . . push args 66 50/push-eax/ed 67 68/push Stderr/imm32 68 68/push Stdout/imm32 69 68/push Stdin/imm32 70 # . . call - 71 e8/call convert/disp32 + 71 e8/call subx-pack/disp32 72 # . . discard args 73 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x10/imm32 # add to esp 74 # syscall(exit, 0) 75 bb/copy-to-ebx 0/imm32 - 76 $main:end: + 76 $subx-pack-main:end: 77 b8/copy-to-eax 1/imm32/exit 78 cd/syscall 0x80/imm8 79 @@ -159,7 +159,7 @@ if ('onhashchange' in window) { 97 # next-token-from-slice(start, end, delim char) -> slice 98 # slice-equal?(slice, string) 99 - 100 convert: # in : (address buffered-file), out : (address buffered-file) -> <void> + 100 subx-pack: # in : (address buffered-file), out : (address buffered-file) -> <void> 101 # pseudocode: 102 # var line = new-stream(512, 1) 103 # var in-code? = false @@ -202,7 +202,7 @@ if ('onhashchange' in window) { 140 89/copy 3/mod/direct 2/rm32/edx . . . 4/r32/esp . . # copy esp to edx 141 # var in-code?/ebx = false 142 31/xor 3/mod/direct 3/rm32/ebx . . . 3/r32/ebx . . # clear ebx - 143 $convert:loop: + 143 $subx-pack:loop: 144 # clear-stream(line) 145 # . . push args 146 51/push-ecx @@ -218,20 +218,20 @@ if ('onhashchange' in window) { 156 e8/call read-line-buffered/disp32 157 # . . discard args 158 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - 159 $convert:check0: + 159 $subx-pack:check0: 160 # if (line->write == 0) break 161 81 7/subop/compare 0/mod/indirect 1/rm32/ecx . . . . . 0/imm32 # compare *ecx - 162 0f 84/jump-if-equal $convert:break/disp32 - 163 +-- 26 lines: #? # dump line ----------------------------------------------------------------------------------------------------------------------------- + 162 0f 84/jump-if-equal $subx-pack:break/disp32 + 163 +-- 26 lines: #? # dump line ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 189 # next-word(line, word-slice) 190 # . . push args 191 52/push-edx 192 51/push-ecx 193 # . . call - 194 e8/call next-word/disp32 + 194 e8/call next-word/disp32 195 # . . discard args 196 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - 197 $convert:check1: + 197 $subx-pack:check1: 198 # if (slice-empty?(word-slice)) write-stream-data(out, line) 199 # . eax = slice-empty?(word-slice) 200 # . . push args @@ -242,9 +242,9 @@ if ('onhashchange' in window) { 205 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 206 # . if (eax != 0) write-stream-data(out, line) 207 3d/compare-eax-and 0/imm32 - 208 0f 85/jump-if-not-equal $convert:pass-through/disp32 - 209 $convert:check2: - 210 +-- 42 lines: #? # dump word-slice ----------------------------------------------------------------------------------------------------------------------- + 208 0f 85/jump-if-not-equal $subx-pack:pass-through/disp32 + 209 $subx-pack:check2: + 210 +-- 42 lines: #? # dump word-slice ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 252 # if (!slice-equal?(word-slice, "==")) goto next check 253 # . eax = slice-equal?(word-slice, "==") 254 # . . push args @@ -256,16 +256,16 @@ if ('onhashchange' in window) { 260 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 261 # . if (eax == 0) goto check3 262 3d/compare-eax-and 0/imm32 - 263 0f 84/jump-if-equal $convert:check3/disp32 + 263 0f 84/jump-if-equal $subx-pack:check3/disp32 264 # word-slice = next-word(line) 265 # . . push args 266 52/push-edx 267 51/push-ecx 268 # . . call - 269 e8/call next-word/disp32 + 269 e8/call next-word/disp32 270 # . . discard args 271 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - 272 +-- 42 lines: #? # dump segment name --------------------------------------------------------------------------------------------------------------------- + 272 +-- 42 lines: #? # dump segment name ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 314 # in-code? = slice-equal?(word-slice, "code") 315 # . . push args 316 68/push "code"/imm32 @@ -277,20 +277,20 @@ if ('onhashchange' in window) { 322 # . . in-code? = eax 323 89/copy 3/mod/direct 3/rm32/ebx . . . 0/r32/eax . . # copy eax to ebx 324 # write-stream-data(out, line) - 325 eb/jump $convert:pass-through/disp8 - 326 $convert:check3: + 325 eb/jump $subx-pack:pass-through/disp8 + 326 $subx-pack:check3: 327 # else rewind-stream(line) 328 # . rewind-stream(line) 329 # . . push args 330 51/push-ecx 331 # . . call - 332 e8/call rewind-stream/disp32 + 332 e8/call rewind-stream/disp32 333 # . . discard args 334 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 335 # if (in-code? != 0) convert-instruction(line, out) 336 81 7/subop/compare 3/mod/direct 3/rm32/ebx . . . . . 0/imm32 # compare ebx - 337 74/jump-if-equal $convert:data/disp8 - 338 $convert:code: + 337 74/jump-if-equal $subx-pack:data/disp8 + 338 $subx-pack:code: 339 # . convert-instruction(line, out) 340 # . . push args 341 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) @@ -300,8 +300,8 @@ if ('onhashchange' in window) { 345 # . . discard args 346 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 347 # . loop - 348 e9/jump $convert:loop/disp32 - 349 $convert:data: + 348 e9/jump $subx-pack:loop/disp32 + 349 $subx-pack:data: 350 # else convert-data(line, out) 351 # . . push args 352 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) @@ -311,19 +311,19 @@ if ('onhashchange' in window) { 356 # . . discard args 357 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 358 # . loop - 359 e9/jump $convert:loop/disp32 - 360 $convert:pass-through: + 359 e9/jump $subx-pack:loop/disp32 + 360 $subx-pack:pass-through: 361 # write-stream-data(out, line) 362 # . . push args 363 51/push-ecx 364 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 365 # . . call - 366 e8/call write-stream-data/disp32 + 366 e8/call write-stream-data/disp32 367 # . . discard args 368 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 369 # . loop - 370 e9/jump $convert:loop/disp32 - 371 $convert:break: + 370 e9/jump $subx-pack:loop/disp32 + 371 $subx-pack:break: 372 # flush(out) 373 # . . push args 374 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) @@ -331,7 +331,7 @@ if ('onhashchange' in window) { 376 e8/call flush/disp32 377 # . . discard args 378 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp - 379 $convert:end: + 379 $subx-pack:end: 380 # . reclaim locals 381 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0x214/imm32 # add to esp 382 # . restore registers @@ -344,7 +344,7 @@ if ('onhashchange' in window) { 389 5d/pop-to-ebp 390 c3/return 391 - 392 test-convert-passes-empty-lines-through: + 392 test-subx-pack-passes-empty-lines-through: 393 # if a line is empty, pass it along unchanged 394 # . prolog 395 55/push-ebp @@ -383,12 +383,12 @@ if ('onhashchange' in window) { 428 # . . discard args 429 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 430 # write nothing to input - 431 # convert(_test-input-buffered-file, _test-output-buffered-file) + 431 # subx-pack(_test-input-buffered-file, _test-output-buffered-file) 432 # . . push args 433 68/push _test-output-buffered-file/imm32 434 68/push _test-input-buffered-file/imm32 435 # . . call - 436 e8/call convert/disp32 + 436 e8/call subx-pack/disp32 437 # . . discard args 438 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 439 # check that the line just passed through @@ -401,7 +401,7 @@ if ('onhashchange' in window) { 446 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 447 # . check-stream-equal(_test-output-stream, "", msg) 448 # . . push args - 449 68/push "F - test-convert-passes-empty-lines-through"/imm32 + 449 68/push "F - test-subx-pack-passes-empty-lines-through"/imm32 450 68/push ""/imm32 451 68/push _test-output-stream/imm32 452 # . . call @@ -413,7 +413,7 @@ if ('onhashchange' in window) { 458 5d/pop-to-ebp 459 c3/return 460 - 461 test-convert-passes-lines-with-just-whitespace-through: + 461 test-subx-pack-passes-lines-with-just-whitespace-through: 462 # if a line is empty, pass it along unchanged 463 # . prolog 464 55/push-ebp @@ -460,12 +460,12 @@ if ('onhashchange' in window) { 505 e8/call write/disp32 506 # . . discard args 507 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - 508 # convert(_test-input-buffered-file, _test-output-buffered-file) + 508 # subx-pack(_test-input-buffered-file, _test-output-buffered-file) 509 # . . push args 510 68/push _test-output-buffered-file/imm32 511 68/push _test-input-buffered-file/imm32 512 # . . call - 513 e8/call convert/disp32 + 513 e8/call subx-pack/disp32 514 # . . discard args 515 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 516 # check that the line just passed through @@ -478,7 +478,7 @@ if ('onhashchange' in window) { 523 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 524 # . check-next-stream-line-equal(_test-output-stream, " ", msg) 525 # . . push args - 526 68/push "F - test-convert-passes-with-just-whitespace-through"/imm32 + 526 68/push "F - test-subx-pack-passes-with-just-whitespace-through"/imm32 527 68/push " "/imm32 528 68/push _test-output-stream/imm32 529 # . . call @@ -490,7 +490,7 @@ if ('onhashchange' in window) { 535 5d/pop-to-ebp 536 c3/return 537 - 538 test-convert-passes-segment-headers-through: + 538 test-subx-pack-passes-segment-headers-through: 539 # if a line starts with '==', pass it along unchanged 540 # . prolog 541 55/push-ebp @@ -537,12 +537,12 @@ if ('onhashchange' in window) { 582 e8/call write/disp32 583 # . . discard args 584 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - 585 # convert(_test-input-buffered-file, _test-output-buffered-file) + 585 # subx-pack(_test-input-buffered-file, _test-output-buffered-file) 586 # . . push args 587 68/push _test-output-buffered-file/imm32 588 68/push _test-input-buffered-file/imm32 589 # . . call - 590 e8/call convert/disp32 + 590 e8/call subx-pack/disp32 591 # . . discard args 592 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 593 # check that the line just passed through @@ -555,7 +555,7 @@ if ('onhashchange' in window) { 600 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 601 # . check-stream-equal(_test-output-stream, "== abcd 0x1", msg) 602 # . . push args - 603 68/push "F - test-convert-passes-segment-headers-through"/imm32 + 603 68/push "F - test-subx-pack-passes-segment-headers-through"/imm32 604 68/push "== abcd 0x1"/imm32 605 68/push _test-output-stream/imm32 606 # . . call @@ -567,7 +567,7 @@ if ('onhashchange' in window) { 612 5d/pop-to-ebp 613 c3/return 614 - 615 test-convert-in-data-segment: + 615 test-subx-pack-in-data-segment: 616 # correctly process lines in the data segment 617 # . prolog 618 55/push-ebp @@ -633,16 +633,16 @@ if ('onhashchange' in window) { 678 e8/call write/disp32 679 # . . discard args 680 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - 681 # convert(_test-input-buffered-file, _test-output-buffered-file) + 681 # subx-pack(_test-input-buffered-file, _test-output-buffered-file) 682 # . . push args 683 68/push _test-output-buffered-file/imm32 684 68/push _test-input-buffered-file/imm32 685 # . . call - 686 e8/call convert/disp32 + 686 e8/call subx-pack/disp32 687 # . . discard args 688 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 689 # check output - 690 +-- 26 lines: #? # debug print --------------------------------------------------------------------------------------------------------------------------- + 690 +-- 26 lines: #? # debug print ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 716 # . flush(_test-output-buffered-file) 717 # . . push args 718 68/push _test-output-buffered-file/imm32 @@ -652,7 +652,7 @@ if ('onhashchange' in window) { 722 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 723 # . check-next-stream-line-equal(_test-output-stream, "== code 0x1", msg) 724 # . . push args - 725 68/push "F - test-convert-in-data-segment/0"/imm32 + 725 68/push "F - test-subx-pack-in-data-segment/0"/imm32 726 68/push "== code 0x1"/imm32 727 68/push _test-output-stream/imm32 728 # . . call @@ -661,7 +661,7 @@ if ('onhashchange' in window) { 731 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 732 # . check-next-stream-line-equal(_test-output-stream, "== data 0x2", msg) 733 # . . push args - 734 68/push "F - test-convert-in-data-segment/1"/imm32 + 734 68/push "F - test-subx-pack-in-data-segment/1"/imm32 735 68/push "== data 0x2"/imm32 736 68/push _test-output-stream/imm32 737 # . . call @@ -670,7 +670,7 @@ if ('onhashchange' in window) { 740 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 741 # . check-next-stream-line-equal(_test-output-stream, "03 04 00 00 00 ", msg) 742 # . . push args - 743 68/push "F - test-convert-in-data-segment/2"/imm32 + 743 68/push "F - test-subx-pack-in-data-segment/2"/imm32 744 68/push "03 04 00 00 00 "/imm32 745 68/push _test-output-stream/imm32 746 # . . call @@ -682,7 +682,7 @@ if ('onhashchange' in window) { 752 5d/pop-to-ebp 753 c3/return 754 - 755 test-convert-code-and-data-segments: + 755 test-subx-pack-code-and-data-segments: 756 # correctly process lines in both code and data segments 757 # . prolog 758 55/push-ebp @@ -766,12 +766,12 @@ if ('onhashchange' in window) { 836 e8/call write/disp32 837 # . . discard args 838 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp - 839 # convert(_test-input-buffered-file, _test-output-buffered-file) + 839 # subx-pack(_test-input-buffered-file, _test-output-buffered-file) 840 # . . push args 841 68/push _test-output-buffered-file/imm32 842 68/push _test-input-buffered-file/imm32 843 # . . call - 844 e8/call convert/disp32 + 844 e8/call subx-pack/disp32 845 # . . discard args 846 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 847 # check output @@ -780,7 +780,7 @@ if ('onhashchange' in window) { 850 # 68 20 # 68/push 0x20/imm8 851 # == data 0x2 852 # 03 04 00 00 00 - 853 +-- 26 lines: #? # debug print --------------------------------------------------------------------------------------------------------------------------- + 853 +-- 26 lines: #? # debug print ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 879 # . flush(_test-output-buffered-file) 880 # . . push args 881 68/push _test-output-buffered-file/imm32 @@ -790,7 +790,7 @@ if ('onhashchange' in window) { 885 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 886 # . check-next-stream-line-equal(_test-output-stream, "== code 0x1", msg) 887 # . . push args - 888 68/push "F - test-convert-code-and-data-segments/0"/imm32 + 888 68/push "F - test-subx-pack-code-and-data-segments/0"/imm32 889 68/push "== code 0x1"/imm32 890 68/push _test-output-stream/imm32 891 # . . call @@ -799,7 +799,7 @@ if ('onhashchange' in window) { 894 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 895 # . check-next-stream-line-equal(_test-output-stream, "e8 20 00 00 00 # e8/call 20/disp32", msg) 896 # . . push args - 897 68/push "F - test-convert-code-and-data-segments/1"/imm32 + 897 68/push "F - test-subx-pack-code-and-data-segments/1"/imm32 898 68/push "e8 20 00 00 00 # e8/call 20/disp32"/imm32 899 68/push _test-output-stream/imm32 900 # . . call @@ -808,7 +808,7 @@ if ('onhashchange' in window) { 903 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 904 # . check-next-stream-line-equal(_test-output-stream, "68 20 # 68/push 0x20/imm8", msg) 905 # . . push args - 906 68/push "F - test-convert-code-and-data-segments/2"/imm32 + 906 68/push "F - test-subx-pack-code-and-data-segments/2"/imm32 907 68/push "68 20 # 68/push 0x20/imm8"/imm32 908 68/push _test-output-stream/imm32 909 # . . call @@ -817,7 +817,7 @@ if ('onhashchange' in window) { 912 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 913 # . check-next-stream-line-equal(_test-output-stream, "== data 0x2", msg) 914 # . . push args - 915 68/push "F - test-convert-code-and-data-segments/3"/imm32 + 915 68/push "F - test-subx-pack-code-and-data-segments/3"/imm32 916 68/push "== data 0x2"/imm32 917 68/push _test-output-stream/imm32 918 # . . call @@ -826,7 +826,7 @@ if ('onhashchange' in window) { 921 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 922 # . check-next-stream-line-equal(_test-output-stream, "03 04 00 00 00 ", msg) 923 # . . push args - 924 68/push "F - test-convert-code-and-data-segments/4"/imm32 + 924 68/push "F - test-subx-pack-code-and-data-segments/4"/imm32 925 68/push "03 04 00 00 00 "/imm32 926 68/push _test-output-stream/imm32 927 # . . call @@ -869,17 +869,17 @@ if ('onhashchange' in window) { 964 68/push 0/imm32/end 965 68/push 0/imm32/start 966 89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . . # copy esp to ecx - 967 +-- 26 lines: #? # dump line ----------------------------------------------------------------------------------------------------------------------------- + 967 +-- 26 lines: #? # dump line ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 993 $convert-data:loop: 994 # next-word(line, word-slice) 995 # . . push args 996 51/push-ecx 997 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 998 # . . call - 999 e8/call next-word/disp32 + 999 e8/call next-word/disp32 1000 # . . discard args 1001 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp -1002 +-- 42 lines: #? # dump word-slice ----------------------------------------------------------------------------------------------------------------------- +1002 +-- 42 lines: #? # dump word-slice ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1044 $convert-data:check0: 1045 # if (slice-empty?(word-slice)) break 1046 # . eax = slice-empty?(word-slice) @@ -891,7 +891,7 @@ if ('onhashchange' in window) { 1052 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 1053 # . if (eax != 0) break 1054 3d/compare-eax-and 0/imm32 -1055 0f 85/jump-if-not-equal $convert-data:break/disp32 +1055 0f 85/jump-if-not-equal $convert-data:break/disp32 1056 $convert-data:check-for-comment: 1057 # if (slice-starts-with?(word-slice, "#")) 1058 # . start/edx = word-slice->start @@ -929,7 +929,7 @@ if ('onhashchange' in window) { 1090 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 1091 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 1092 # . . call -1093 e8/call write-stream-data/disp32 +1093 e8/call write-stream-data/disp32 1094 # . . discard args 1095 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1096 # return @@ -941,7 +941,7 @@ if ('onhashchange' in window) { 1102 68/push "imm32"/imm32 1103 51/push-ecx 1104 # . . call -1105 e8/call has-metadata?/disp32 +1105 e8/call has-metadata?/disp32 1106 # . . discard args 1107 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1108 # . if (eax == 0) process as a single byte @@ -954,10 +954,10 @@ if ('onhashchange' in window) { 1115 51/push-ecx 1116 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 1117 # . . call -1118 e8/call emit/disp32 +1118 e8/call emit/disp32 1119 # . . discard args 1120 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp -1121 e9/jump $convert-data:loop/disp32 +1121 e9/jump $convert-data:loop/disp32 1122 $convert-data:single-byte: 1123 # emit(out, word-slice, 1) 1124 # . . push args @@ -965,14 +965,14 @@ if ('onhashchange' in window) { 1126 51/push-ecx 1127 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 1128 # . . call -1129 e8/call emit/disp32 +1129 e8/call emit/disp32 1130 # . . discard args 1131 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp -1132 e9/jump $convert-data:loop/disp32 +1132 e9/jump $convert-data:loop/disp32 1133 $convert-data:break: 1134 # write-buffered(out, "\n") 1135 # . . push args -1136 68/push "\n"/imm32 +1136 68/push Newline/imm32 1137 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 1138 # . . call 1139 e8/call write-buffered/disp32 @@ -1044,7 +1044,7 @@ if ('onhashchange' in window) { 1205 e8/call flush/disp32 1206 # . . discard args 1207 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -1208 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +1208 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1234 # . check-stream-equal(_test-output-stream, "# abcd", msg) 1235 # . . push args 1236 68/push "F - test-convert-data-passes-comments-through"/imm32 @@ -1523,7 +1523,7 @@ if ('onhashchange' in window) { 1709 e8/call flush/disp32 1710 # . . discard args 1711 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -1712 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +1712 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1738 # . check-stream-equal(_test-output-stream, "30 abcd/o 42 e1 00 00 \n", msg) 1739 # . . push args 1740 68/push "F - test-convert-data-multiple-words"/imm32 @@ -1592,7 +1592,7 @@ if ('onhashchange' in window) { 1803 e8/call flush/disp32 1804 # . . discard args 1805 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -1806 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +1806 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1832 # . check-stream-equal(_test-output-stream, "30 00 00 00 # comment", msg) 1833 # . . push args 1834 68/push "F - test-convert-data-trailing-comment"/imm32 @@ -1654,7 +1654,7 @@ if ('onhashchange' in window) { 1890 51/push-ecx 1891 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 1892 # . . call -1893 e8/call next-word/disp32 +1893 e8/call next-word/disp32 1894 # . . discard args 1895 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1896 $convert-instruction:check0: @@ -1695,7 +1695,7 @@ if ('onhashchange' in window) { 1931 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 1932 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 1933 # . . call -1934 e8/call write-stream-data/disp32 +1934 e8/call write-stream-data/disp32 1935 # . . discard args 1936 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 1937 # return @@ -1814,7 +1814,7 @@ if ('onhashchange' in window) { 2050 # . . push args 2051 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 2052 # . . call -2053 e8/call rewind-stream/disp32 +2053 e8/call rewind-stream/disp32 2054 # . . discard args 2055 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2056 $emit-opcodes:op1: @@ -1823,7 +1823,7 @@ if ('onhashchange' in window) { 2059 51/push-ecx 2060 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 2061 # . . call -2062 e8/call next-word/disp32 +2062 e8/call next-word/disp32 2063 # . . discard args 2064 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2065 # if (slice-empty?(op1)) return @@ -1866,7 +1866,7 @@ if ('onhashchange' in window) { 2102 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2103 # write-buffered(out, " ") 2104 # . . push args -2105 68/push " "/imm32 +2105 68/push Space/imm32 2106 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 2107 # . . call 2108 e8/call write-buffered/disp32 @@ -1916,7 +1916,7 @@ if ('onhashchange' in window) { 2152 52/push-edx 2153 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 2154 # . . call -2155 e8/call next-word/disp32 +2155 e8/call next-word/disp32 2156 # . . discard args 2157 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2158 # if (slice-empty?(op2)) return @@ -1959,7 +1959,7 @@ if ('onhashchange' in window) { 2195 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2196 # write-buffered(out, " ") 2197 # . . push args -2198 68/push " "/imm32 +2198 68/push Space/imm32 2199 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 2200 # . . call 2201 e8/call write-buffered/disp32 @@ -1995,7 +1995,7 @@ if ('onhashchange' in window) { 2231 52/push-edx 2232 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 2233 # . . call -2234 e8/call next-word/disp32 +2234 e8/call next-word/disp32 2235 # . . discard args 2236 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2237 # if (slice-empty?(op3)) return @@ -2038,7 +2038,7 @@ if ('onhashchange' in window) { 2274 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2275 # write-buffered(out, " ") 2276 # . . push args -2277 68/push " "/imm32 +2277 68/push Space/imm32 2278 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 2279 # . . call 2280 e8/call write-buffered/disp32 @@ -2109,20 +2109,20 @@ if ('onhashchange' in window) { 2345 # . . push args 2346 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 2347 # . . call -2348 e8/call rewind-stream/disp32 +2348 e8/call rewind-stream/disp32 2349 # . . discard args 2350 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -2351 +-- 33 lines: #? # dump line ----------------------------------------------------------------------------------------------------------------------------- +2351 +-- 33 lines: #? # dump line ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2384 $emit-modrm:loop: 2385 # next-word(line, word-slice) 2386 # . . push args 2387 51/push-ecx 2388 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 2389 # . . call -2390 e8/call next-word/disp32 +2390 e8/call next-word/disp32 2391 # . . discard args 2392 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp -2393 +-- 42 lines: #? # dump word-slice ----------------------------------------------------------------------------------------------------------------------- +2393 +-- 42 lines: #? # dump word-slice ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2435 $emit-modrm:check0: 2436 # if (slice-empty?(word-slice)) break 2437 # . eax = slice-empty?(word-slice) @@ -2134,7 +2134,7 @@ if ('onhashchange' in window) { 2443 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2444 # . if (eax != 0) pass through 2445 3d/compare-eax-and 0/imm32 -2446 0f 85/jump-if-not-equal $emit-modrm:break/disp32 +2446 0f 85/jump-if-not-equal $emit-modrm:break/disp32 2447 $emit-modrm:check1: 2448 # if (slice-starts-with?(word-slice, "#")) break 2449 # . spill edx @@ -2148,7 +2148,7 @@ if ('onhashchange' in window) { 2457 5a/pop-to-edx 2458 # . if (eax == '#') pass through 2459 3d/compare-eax-and 0x23/imm32/hash -2460 0f 84/jump-if-equal $emit-modrm:break/disp32 +2460 0f 84/jump-if-equal $emit-modrm:break/disp32 2461 $emit-modrm:check-for-mod: 2462 # if (has-metadata?(word-slice, "mod")) 2463 # . eax = has-metadata?(ecx, "mod") @@ -2156,7 +2156,7 @@ if ('onhashchange' in window) { 2465 68/push "mod"/imm32 2466 51/push-ecx 2467 # . . call -2468 e8/call has-metadata?/disp32 +2468 e8/call has-metadata?/disp32 2469 # . . discard args 2470 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2471 # . if (eax == 0) goto next check @@ -2176,7 +2176,7 @@ if ('onhashchange' in window) { 2485 # has-modrm? = true 2486 ba/copy-to-edx 1/imm32/true 2487 # continue -2488 e9/jump $emit-modrm:loop/disp32 +2488 e9/jump $emit-modrm:loop/disp32 2489 $emit-modrm:check-for-rm32: 2490 # if (has-metadata?(word-slice, "rm32")) 2491 # . eax = has-metadata?(ecx, "rm32") @@ -2184,7 +2184,7 @@ if ('onhashchange' in window) { 2493 68/push "rm32"/imm32 2494 51/push-ecx 2495 # . . call -2496 e8/call has-metadata?/disp32 +2496 e8/call has-metadata?/disp32 2497 # . . discard args 2498 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2499 # . if (eax == 0) goto next check @@ -2204,7 +2204,7 @@ if ('onhashchange' in window) { 2513 # has-modrm? = true 2514 ba/copy-to-edx 1/imm32/true 2515 # continue -2516 e9/jump $emit-modrm:loop/disp32 +2516 e9/jump $emit-modrm:loop/disp32 2517 $emit-modrm:check-for-r32: 2518 # if (has-metadata?(word-slice, "r32")) 2519 # . eax = has-metadata?(ecx, "r32") @@ -2212,7 +2212,7 @@ if ('onhashchange' in window) { 2521 68/push "r32"/imm32 2522 51/push-ecx 2523 # . . call -2524 e8/call has-metadata?/disp32 +2524 e8/call has-metadata?/disp32 2525 # . . discard args 2526 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2527 # . if (eax == 0) goto next check @@ -2232,7 +2232,7 @@ if ('onhashchange' in window) { 2541 # has-modrm? = true 2542 ba/copy-to-edx 1/imm32/true 2543 # continue -2544 e9/jump $emit-modrm:loop/disp32 +2544 e9/jump $emit-modrm:loop/disp32 2545 $emit-modrm:check-for-subop: 2546 # if (has-metadata?(word-slice, "subop")) 2547 # . eax = has-metadata?(ecx, "subop") @@ -2240,12 +2240,12 @@ if ('onhashchange' in window) { 2549 68/push "subop"/imm32 2550 51/push-ecx 2551 # . . call -2552 e8/call has-metadata?/disp32 +2552 e8/call has-metadata?/disp32 2553 # . . discard args 2554 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2555 # . if (eax == 0) loop 2556 3d/compare-eax-and 0/imm32 -2557 0f 84/jump-if-equal $emit-modrm:loop/disp32 +2557 0f 84/jump-if-equal $emit-modrm:loop/disp32 2558 $emit-modrm:subop: 2559 # r32 = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) 2560 # . eax = parse-datum-of-word(word-slice) @@ -2260,7 +2260,7 @@ if ('onhashchange' in window) { 2569 # has-modrm? = true 2570 ba/copy-to-edx 1/imm32/true 2571 # continue -2572 e9/jump $emit-modrm:loop/disp32 +2572 e9/jump $emit-modrm:loop/disp32 2573 $emit-modrm:break: 2574 # if (!has-modrm?) return 2575 81 7/subop/compare 3/mod/direct 2/rm32/edx . . . . . 0/imm32 # compare edx @@ -2278,14 +2278,14 @@ if ('onhashchange' in window) { 2587 # modrm |= rm32 & 0b111 2588 81 4/subop/and 3/mod/direct 6/rm32/esi . . . . . 7/imm32/0b111 # bitwise and of esi 2589 09/or 3/mod/direct 3/rm32/ebx . . . 6/r32/esi . . # ebx = bitwise OR with esi -2590 $emit-modrm:emit: +2590 $emit-modrm:emit: 2591 # emit-hex(out, modrm, 1) 2592 # . . push args 2593 68/push 1/imm32 2594 53/push-ebx 2595 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 2596 # . . call -2597 e8/call emit-hex/disp32 +2597 e8/call emit-hex/disp32 2598 # . . discard args 2599 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 2600 $emit-modrm:end: @@ -2354,20 +2354,20 @@ if ('onhashchange' in window) { 2663 # . . push args 2664 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 2665 # . . call -2666 e8/call rewind-stream/disp32 +2666 e8/call rewind-stream/disp32 2667 # . . discard args 2668 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2669 $emit-sib:loop: -2670 +-- 26 lines: #? # dump line ----------------------------------------------------------------------------------------------------------------------------- +2670 +-- 26 lines: #? # dump line ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2696 # next-word(line, word-slice) 2697 # . . push args 2698 51/push-ecx 2699 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 2700 # . . call -2701 e8/call next-word/disp32 +2701 e8/call next-word/disp32 2702 # . . discard args 2703 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp -2704 +-- 42 lines: #? # dump word-slice ----------------------------------------------------------------------------------------------------------------------- +2704 +-- 42 lines: #? # dump word-slice ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2746 $emit-sib:check0: 2747 # if (slice-empty?(word-slice)) break 2748 # . eax = slice-empty?(word-slice) @@ -2379,7 +2379,7 @@ if ('onhashchange' in window) { 2754 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 2755 # . if (eax != 0) pass through 2756 3d/compare-eax-and 0/imm32 -2757 0f 85/jump-if-not-equal $emit-sib:break/disp32 +2757 0f 85/jump-if-not-equal $emit-sib:break/disp32 2758 $emit-sib:check1: 2759 # if (slice-starts-with?(word-slice, "#")) break 2760 # . spill edx @@ -2393,7 +2393,7 @@ if ('onhashchange' in window) { 2768 5a/pop-to-edx 2769 # . if (eax == '#') pass through 2770 3d/compare-eax-and 0x23/imm32/hash -2771 0f 84/jump-if-equal $emit-sib:break/disp32 +2771 0f 84/jump-if-equal $emit-sib:break/disp32 2772 $emit-sib:check-for-scale: 2773 # if (has-metadata?(word-slice, "scale")) 2774 # . eax = has-metadata?(ecx, "scale") @@ -2401,7 +2401,7 @@ if ('onhashchange' in window) { 2776 68/push "scale"/imm32 2777 51/push-ecx 2778 # . . call -2779 e8/call has-metadata?/disp32 +2779 e8/call has-metadata?/disp32 2780 # . . discard args 2781 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2782 # . if (eax == 0) goto next check @@ -2421,7 +2421,7 @@ if ('onhashchange' in window) { 2796 # has-sib? = true 2797 ba/copy-to-edx 1/imm32/true 2798 # continue -2799 e9/jump $emit-sib:loop/disp32 +2799 e9/jump $emit-sib:loop/disp32 2800 $emit-sib:check-for-base: 2801 # if (has-metadata?(word-slice, "base")) 2802 # . eax = has-metadata?(ecx, "base") @@ -2429,7 +2429,7 @@ if ('onhashchange' in window) { 2804 68/push "base"/imm32 2805 51/push-ecx 2806 # . . call -2807 e8/call has-metadata?/disp32 +2807 e8/call has-metadata?/disp32 2808 # . . discard args 2809 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2810 # . if (eax == 0) goto next check @@ -2449,7 +2449,7 @@ if ('onhashchange' in window) { 2824 # has-sib? = true 2825 ba/copy-to-edx 1/imm32/true 2826 # continue -2827 e9/jump $emit-sib:loop/disp32 +2827 e9/jump $emit-sib:loop/disp32 2828 $emit-sib:check-for-index: 2829 # if (has-metadata?(word-slice, "index")) 2830 # . eax = has-metadata?(ecx, "index") @@ -2457,12 +2457,12 @@ if ('onhashchange' in window) { 2832 68/push "index"/imm32 2833 51/push-ecx 2834 # . . call -2835 e8/call has-metadata?/disp32 +2835 e8/call has-metadata?/disp32 2836 # . . discard args 2837 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 2838 # . if (eax == 0) loop 2839 3d/compare-eax-and 0/imm32 -2840 0f 84/jump-if-equal $emit-sib:loop/disp32 +2840 0f 84/jump-if-equal $emit-sib:loop/disp32 2841 $emit-sib:index: 2842 # index = parse-hex-int(next-token-from-slice(word-slice->start, word-slice->end, '/')) 2843 # . eax = parse-datum-of-word(word-slice) @@ -2477,7 +2477,7 @@ if ('onhashchange' in window) { 2852 # has-sib? = true 2853 ba/copy-to-edx 1/imm32/true 2854 # continue -2855 e9/jump $emit-sib:loop/disp32 +2855 e9/jump $emit-sib:loop/disp32 2856 $emit-sib:break: 2857 # if (!has-sib?) return 2858 81 7/subop/compare 3/mod/direct 2/rm32/edx . . . . . 0/imm32 # compare edx @@ -2495,14 +2495,14 @@ if ('onhashchange' in window) { 2870 # sib |= base & 0b111 2871 81 4/subop/and 3/mod/direct 6/rm32/esi . . . . . 7/imm32/0b111 # bitwise and of esi 2872 09/or 3/mod/direct 3/rm32/ebx . . . 6/r32/esi . . # ebx = bitwise OR with esi -2873 $emit-sib:emit: +2873 $emit-sib:emit: 2874 # emit-hex(out, sib, 1) 2875 # . . push args 2876 68/push 1/imm32 2877 53/push-ebx 2878 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 2879 # . . call -2880 e8/call emit-hex/disp32 +2880 e8/call emit-hex/disp32 2881 # . . discard args 2882 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 2883 $emit-sib:end: @@ -2553,20 +2553,20 @@ if ('onhashchange' in window) { 2928 # . . push args 2929 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 2930 # . . call -2931 e8/call rewind-stream/disp32 +2931 e8/call rewind-stream/disp32 2932 # . . discard args 2933 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -2934 +-- 26 lines: #? # dump line ----------------------------------------------------------------------------------------------------------------------------- +2934 +-- 26 lines: #? # dump line ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 2960 $emit-disp:loop: 2961 # next-word(line, word-slice) 2962 # . . push args 2963 51/push-ecx 2964 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 2965 # . . call -2966 e8/call next-word/disp32 +2966 e8/call next-word/disp32 2967 # . . discard args 2968 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp -2969 +-- 42 lines: #? # dump word-slice ----------------------------------------------------------------------------------------------------------------------- +2969 +-- 42 lines: #? # dump word-slice ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3011 $emit-disp:check0: 3012 # if (slice-empty?(word-slice)) break 3013 # . eax = slice-empty?(word-slice) @@ -2578,7 +2578,7 @@ if ('onhashchange' in window) { 3019 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 3020 # . if (eax != 0) pass through 3021 3d/compare-eax-and 0/imm32 -3022 0f 85/jump-if-not-equal $emit-disp:break/disp32 +3022 0f 85/jump-if-not-equal $emit-disp:break/disp32 3023 $emit-disp:check1: 3024 # if (slice-starts-with?(word-slice, "#")) break 3025 # . start/edx = word-slice->start @@ -2588,7 +2588,7 @@ if ('onhashchange' in window) { 3029 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL 3030 # . if (eax == '#') break 3031 3d/compare-eax-and 0x23/imm32/hash -3032 0f 84/jump-if-equal $emit-disp:break/disp32 +3032 0f 84/jump-if-equal $emit-disp:break/disp32 3033 $emit-disp:check-for-disp32: 3034 # if (has-metadata?(word-slice, "disp32")) 3035 # . eax = has-metadata?(ecx, "disp32") @@ -2596,7 +2596,7 @@ if ('onhashchange' in window) { 3037 68/push "disp32"/imm32 3038 51/push-ecx 3039 # . . call -3040 e8/call has-metadata?/disp32 +3040 e8/call has-metadata?/disp32 3041 # . . discard args 3042 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3043 # . if (eax == 0) goto next check @@ -2609,11 +2609,11 @@ if ('onhashchange' in window) { 3050 51/push-ecx 3051 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 3052 # . . call -3053 e8/call emit/disp32 +3053 e8/call emit/disp32 3054 # . . discard args 3055 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 3056 # break -3057 e9/jump $emit-disp:break/disp32 +3057 e9/jump $emit-disp:break/disp32 3058 $emit-disp:check-for-disp16: 3059 # else if (has-metadata?(word-slice, "disp16")) 3060 # . eax = has-metadata?(ecx, "disp16") @@ -2621,7 +2621,7 @@ if ('onhashchange' in window) { 3062 68/push "disp16"/imm32 3063 51/push-ecx 3064 # . . call -3065 e8/call has-metadata?/disp32 +3065 e8/call has-metadata?/disp32 3066 # . . discard args 3067 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3068 # . if (eax == 0) goto next check @@ -2634,11 +2634,11 @@ if ('onhashchange' in window) { 3075 51/push-ecx 3076 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 3077 # . . call -3078 e8/call emit/disp32 +3078 e8/call emit/disp32 3079 # . . discard args 3080 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 3081 # break -3082 e9/jump $emit-disp:break/disp32 +3082 e9/jump $emit-disp:break/disp32 3083 $emit-disp:check-for-disp8: 3084 # if (has-metadata?(word-slice, "disp8")) 3085 # . eax = has-metadata?(ecx, "disp8") @@ -2646,12 +2646,12 @@ if ('onhashchange' in window) { 3087 68/push "disp8"/imm32 3088 51/push-ecx 3089 # . . call -3090 e8/call has-metadata?/disp32 +3090 e8/call has-metadata?/disp32 3091 # . . discard args 3092 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3093 # . if (eax == 0) loop 3094 3d/compare-eax-and 0/imm32 -3095 0f 84/jump-if-equal $emit-disp:loop/disp32 +3095 0f 84/jump-if-equal $emit-disp:loop/disp32 3096 $emit-disp:disp8: 3097 # emit(out, word-slice, 1) 3098 # . . push args @@ -2659,7 +2659,7 @@ if ('onhashchange' in window) { 3100 51/push-ecx 3101 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 3102 # . . call -3103 e8/call emit/disp32 +3103 e8/call emit/disp32 3104 # . . discard args 3105 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 3106 # break @@ -2708,20 +2708,20 @@ if ('onhashchange' in window) { 3149 # . . push args 3150 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 3151 # . . call -3152 e8/call rewind-stream/disp32 +3152 e8/call rewind-stream/disp32 3153 # . . discard args 3154 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -3155 +-- 26 lines: #? # dump line ----------------------------------------------------------------------------------------------------------------------------- +3155 +-- 26 lines: #? # dump line ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3181 $emit-imm:loop: 3182 # next-word(line, word-slice) 3183 # . . push args 3184 51/push-ecx 3185 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 3186 # . . call -3187 e8/call next-word/disp32 +3187 e8/call next-word/disp32 3188 # . . discard args 3189 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp -3190 +-- 42 lines: #? # dump word-slice ----------------------------------------------------------------------------------------------------------------------- +3190 +-- 42 lines: #? # dump word-slice ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3232 $emit-imm:check0: 3233 # if (slice-empty?(word-slice)) break 3234 # . eax = slice-empty?(word-slice) @@ -2733,7 +2733,7 @@ if ('onhashchange' in window) { 3240 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp 3241 # . if (eax != 0) pass through 3242 3d/compare-eax-and 0/imm32 -3243 0f 85/jump-if-not-equal $emit-imm:break/disp32 +3243 0f 85/jump-if-not-equal $emit-imm:break/disp32 3244 $emit-imm:check1: 3245 # if (slice-starts-with?(word-slice, "#")) break 3246 # . start/edx = slice->start @@ -2743,7 +2743,7 @@ if ('onhashchange' in window) { 3250 8a/copy-byte 0/mod/indirect 2/rm32/edx . . . 0/r32/AL . . # copy byte at *edx to AL 3251 # . if (eax == '#') break 3252 3d/compare-eax-and 0x23/imm32/hash -3253 0f 84/jump-if-equal $emit-imm:break/disp32 +3253 0f 84/jump-if-equal $emit-imm:break/disp32 3254 $emit-imm:check-for-imm32: 3255 # if (has-metadata?(word-slice, "imm32")) 3256 # . eax = has-metadata?(ecx, "imm32") @@ -2751,7 +2751,7 @@ if ('onhashchange' in window) { 3258 68/push "imm32"/imm32 3259 51/push-ecx 3260 # . . call -3261 e8/call has-metadata?/disp32 +3261 e8/call has-metadata?/disp32 3262 # . . discard args 3263 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3264 # . if (eax == 0) goto next check @@ -2764,11 +2764,11 @@ if ('onhashchange' in window) { 3271 51/push-ecx 3272 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 3273 # . . call -3274 e8/call emit/disp32 +3274 e8/call emit/disp32 3275 # . . discard args 3276 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 3277 # break -3278 e9/jump $emit-imm:break/disp32 +3278 e9/jump $emit-imm:break/disp32 3279 $emit-imm:check-for-imm16: 3280 # if (has-metadata?(word-slice, "imm16")) 3281 # . eax = has-metadata?(ecx, "imm16") @@ -2776,7 +2776,7 @@ if ('onhashchange' in window) { 3283 68/push "imm16"/imm32 3284 51/push-ecx 3285 # . . call -3286 e8/call has-metadata?/disp32 +3286 e8/call has-metadata?/disp32 3287 # . . discard args 3288 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3289 # . if (eax == 0) goto next check @@ -2789,11 +2789,11 @@ if ('onhashchange' in window) { 3296 51/push-ecx 3297 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 3298 # . . call -3299 e8/call emit/disp32 +3299 e8/call emit/disp32 3300 # . . discard args 3301 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 3302 # break -3303 e9/jump $emit-imm:break/disp32 +3303 e9/jump $emit-imm:break/disp32 3304 $emit-imm:check-for-imm8: 3305 # if (has-metadata?(word-slice, "imm8")) 3306 # . eax = has-metadata?(ecx, "imm8") @@ -2801,12 +2801,12 @@ if ('onhashchange' in window) { 3308 68/push "imm8"/imm32 3309 51/push-ecx 3310 # . . call -3311 e8/call has-metadata?/disp32 +3311 e8/call has-metadata?/disp32 3312 # . . discard args 3313 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3314 # . if (eax == 0) loop 3315 3d/compare-eax-and 0/imm32 -3316 0f 84/jump-if-equal $emit-imm:loop/disp32 +3316 0f 84/jump-if-equal $emit-imm:loop/disp32 3317 $emit-imm:imm8: 3318 # emit(out, word-slice, 1) 3319 # . . push args @@ -2814,7 +2814,7 @@ if ('onhashchange' in window) { 3321 51/push-ecx 3322 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 3323 # . . call -3324 e8/call emit/disp32 +3324 e8/call emit/disp32 3325 # . . discard args 3326 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp 3327 # break @@ -2847,7 +2847,7 @@ if ('onhashchange' in window) { 3354 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) 3355 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12) 3356 # . . call -3357 e8/call write-stream-data/disp32 +3357 e8/call write-stream-data/disp32 3358 # . . discard args 3359 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp 3360 $emit-line-in-comment:end: @@ -3046,7 +3046,7 @@ if ('onhashchange' in window) { 3553 e8/call flush/disp32 3554 # . . discard args 3555 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -3556 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +3556 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3582 # . check-stream-equal(_test-output-stream, "ab # ab/cd # comment", msg) 3583 # . . push args 3584 68/push "F - test-convert-instruction-handles-single-opcode"/imm32 @@ -3115,7 +3115,7 @@ if ('onhashchange' in window) { 3647 e8/call flush/disp32 3648 # . . discard args 3649 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -3650 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +3650 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3676 # . check-stream-equal(_test-output-stream, "0f ab # 0f/m1 ab/m2 # comment", msg) 3677 # . . push args 3678 68/push "F - test-convert-instruction-handles-0f-opcode"/imm32 @@ -3184,7 +3184,7 @@ if ('onhashchange' in window) { 3741 e8/call flush/disp32 3742 # . . discard args 3743 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -3744 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +3744 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3770 # . check-stream-equal(_test-output-stream, "f2 ab # f2/m1 ab/m2 # comment", msg) 3771 # . . push args 3772 68/push "F - test-convert-instruction-handles-f2-opcode"/imm32 @@ -3253,7 +3253,7 @@ if ('onhashchange' in window) { 3835 e8/call flush/disp32 3836 # . . discard args 3837 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -3838 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +3838 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3864 # . check-stream-equal(_test-output-stream, "f3 ab # f3/m1 ab/m2 # comment", msg) 3865 # . . push args 3866 68/push "F - test-convert-instruction-handles-f3-opcode"/imm32 @@ -3322,7 +3322,7 @@ if ('onhashchange' in window) { 3929 e8/call flush/disp32 3930 # . . discard args 3931 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -3932 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +3932 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3958 # . check-stream-equal(_test-output-stream, "f2 0f ab # f2/m1 0f/m2 ab/m3 # comment", msg) 3959 # . . push args 3960 68/push "F - test-convert-instruction-handles-f2-0f-opcode"/imm32 @@ -3391,7 +3391,7 @@ if ('onhashchange' in window) { 4023 e8/call flush/disp32 4024 # . . discard args 4025 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4026 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4026 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4052 # . check-stream-equal(_test-output-stream, "f3 0f ab # f3/m1 0f/m2 ab/m3 # comment", msg) 4053 # . . push args 4054 68/push "F - test-convert-instruction-handles-f3-0f-opcode"/imm32 @@ -3460,7 +3460,7 @@ if ('onhashchange' in window) { 4117 e8/call flush/disp32 4118 # . . discard args 4119 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4120 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4120 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4146 # . check-stream-equal(_test-output-stream, "ab # f3/m1 0f/m2 ab/m3 # comment", msg) 4147 # . . push args 4148 68/push "F - test-convert-instruction-handles-unused-opcodes"/imm32 @@ -3529,7 +3529,7 @@ if ('onhashchange' in window) { 4211 e8/call flush/disp32 4212 # . . discard args 4213 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4214 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4214 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4240 # . check-stream-equal(_test-output-stream, "f2 ab # f2/m1 ab/m2 cd/m3 # comment", msg) 4241 # . . push args 4242 68/push "F - test-convert-instruction-handles-unused-second-opcodes"/imm32 @@ -3598,7 +3598,7 @@ if ('onhashchange' in window) { 4305 e8/call flush/disp32 4306 # . . discard args 4307 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4308 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4308 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4334 # . check-stream-equal(_test-output-stream, "f3 ab # f3/m1 ab/m2 cd/m3 # comment", msg) 4335 # . . push args 4336 68/push "F - test-convert-instruction-handles-unused-second-opcodes"/imm32 @@ -3667,7 +3667,7 @@ if ('onhashchange' in window) { 4399 e8/call flush/disp32 4400 # . . discard args 4401 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4402 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4402 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4428 # . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/mod 0/rm32 1/r32", msg) 4429 # . . push args 4430 68/push "F - test-convert-instruction-emits-modrm-byte"/imm32 @@ -3734,7 +3734,7 @@ if ('onhashchange' in window) { 4491 e8/call flush/disp32 4492 # . . discard args 4493 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4494 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4494 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4520 # check output 4521 # . check-stream-equal(_test-output-stream, "# abcd", msg) 4522 # . . push args @@ -3804,7 +3804,7 @@ if ('onhashchange' in window) { 4586 e8/call flush/disp32 4587 # . . discard args 4588 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4589 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4589 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4615 # . check-stream-equal(_test-output-stream, "ff 30 # ff 6/subop/push 0/mod 0/rm32", msg) 4616 # . . push args 4617 68/push "F - test-convert-instruction-emits-modrm-byte-from-subop"/imm32 @@ -3873,7 +3873,7 @@ if ('onhashchange' in window) { 4680 e8/call flush/disp32 4681 # . . discard args 4682 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4683 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4683 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4709 # . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/rm32 1/r32", msg) 4710 # . . push args 4711 68/push "F - test-convert-instruction-emits-modrm-byte-with-missing-mod"/imm32 @@ -3942,7 +3942,7 @@ if ('onhashchange' in window) { 4774 e8/call flush/disp32 4775 # . . discard args 4776 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4777 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4777 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4803 # . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/mod 1/r32", msg) 4804 # . . push args 4805 68/push "F - test-convert-instruction-emits-modrm-byte-with-missing-rm32"/imm32 @@ -4011,7 +4011,7 @@ if ('onhashchange' in window) { 4868 e8/call flush/disp32 4869 # . . discard args 4870 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4871 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4871 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4897 # . check-stream-equal(_test-output-stream, "8b 00 # 8b/copy 0/mod 0/rm32", msg) 4898 # . . push args 4899 68/push "F - test-convert-instruction-emits-modrm-byte-with-missing-r32"/imm32 @@ -4080,7 +4080,7 @@ if ('onhashchange' in window) { 4962 e8/call flush/disp32 4963 # . . discard args 4964 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -4965 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +4965 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 4991 # . check-stream-equal(_test-output-stream, "8b 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 1/index 0/scale", msg) 4992 # . . push args 4993 68/push "F - test-convert-instruction-emits-sib-byte"/imm32 @@ -4149,7 +4149,7 @@ if ('onhashchange' in window) { 5056 e8/call flush/disp32 5057 # . . discard args 5058 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -5059 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +5059 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5085 # . check-stream-equal(_test-output-stream, "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 1/index 0/scale", msg) 5086 # . . push args 5087 68/push "F - test-convert-instruction-emits-sib-byte-with-missing-base"/imm32 @@ -4218,7 +4218,7 @@ if ('onhashchange' in window) { 5150 e8/call flush/disp32 5151 # . . discard args 5152 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -5153 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +5153 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5179 # . check-stream-equal(_test-output-stream, "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 0/scale", msg) 5180 # . . push args 5181 68/push "F - test-convert-instruction-emits-sib-byte-with-missing-index"/imm32 @@ -4287,7 +4287,7 @@ if ('onhashchange' in window) { 5244 e8/call flush/disp32 5245 # . . discard args 5246 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -5247 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +5247 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5273 # . check-stream-equal(_test-output-stream, "8b 0c 08 # 8b/copy 0/mod 4/rm32 1/r32 0/base 1/index", msg) 5274 # . . push args 5275 68/push "F - test-convert-instruction-emits-sib-byte-with-missing-scale"/imm32 @@ -4356,7 +4356,7 @@ if ('onhashchange' in window) { 5338 e8/call flush/disp32 5339 # . . discard args 5340 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -5341 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +5341 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5367 # . check-stream-equal(_test-output-stream, "e8 20 00 00 00 # e8/call 20/disp32", msg) 5368 # . . push args 5369 68/push "F - test-convert-instruction-handles-disp32-operand"/imm32 @@ -4425,7 +4425,7 @@ if ('onhashchange' in window) { 5432 e8/call flush/disp32 5433 # . . discard args 5434 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -5435 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +5435 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5461 # . check-stream-equal(_test-output-stream, "e8 20 00 # e8/call 20/disp16", msg) 5462 # . . push args 5463 68/push "F - test-convert-instruction-handles-disp16-operand"/imm32 @@ -4494,7 +4494,7 @@ if ('onhashchange' in window) { 5526 e8/call flush/disp32 5527 # . . discard args 5528 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -5529 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +5529 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5555 # . check-stream-equal(_test-output-stream, "eb 20 # eb/jump 20/disp8", msg) 5556 # . . push args 5557 68/push "F - test-convert-instruction-handles-disp8-operand"/imm32 @@ -4563,7 +4563,7 @@ if ('onhashchange' in window) { 5620 e8/call flush/disp32 5621 # . . discard args 5622 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -5623 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +5623 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5649 # . check-stream-equal(_test-output-stream, "eb xyz/disp8 # eb/jump xyz/disp8", msg) 5650 # . . push args 5651 68/push "F - test-convert-instruction-handles-disp8-name"/imm32 @@ -4632,7 +4632,7 @@ if ('onhashchange' in window) { 5714 e8/call flush/disp32 5715 # . . discard args 5716 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -5717 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +5717 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5743 # . check-stream-equal(_test-output-stream, "68 20 00 00 00 # 68/push 0x20/imm32", msg) 5744 # . . push args 5745 68/push "F - test-convert-instruction-handles-imm32-operand"/imm32 @@ -4702,7 +4702,7 @@ if ('onhashchange' in window) { 5809 e8/call flush/disp32 5810 # . . discard args 5811 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -5812 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +5812 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5838 # . check-stream-equal(_test-output-stream, "68 20 00 # 68/push 0x20/imm16", msg) 5839 # . . push args 5840 68/push "F - test-convert-instruction-handles-imm16-operand"/imm32 @@ -4772,7 +4772,7 @@ if ('onhashchange' in window) { 5904 e8/call flush/disp32 5905 # . . discard args 5906 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp -5907 +-- 26 lines: #? # dump output --------------------------------------------------------------------------------------------------------------------------- +5907 +-- 26 lines: #? # dump output ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 5933 # . check-stream-equal(_test-output-stream, "68 20 # 68/push 0x20/imm8", msg) 5934 # . . push args 5935 68/push "F - test-convert-instruction-handles-imm8-operand"/imm32 -- cgit 1.4.1-2-gfad0