1 # Print an error message and exit.
4 # instruction effective address register displacement immediate
5 # . op subop mod rm32 base index scale r32
6 # . 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
8 # write(out, "Error: "+msg+"\n") then stop(ed, 1)
9 error: # ed: (addr exit-descriptor), out: fd or (addr stream byte), msg: (addr array byte)
12 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
13 # write(out, "Error: ")
15 68/push "Error: "/imm32
16 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
20 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
23 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0x10/disp8 . # push *(ebp+16)
24 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
28 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
32 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 0xc/disp8 . # push *(ebp+12)
36 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
40 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8)
43 # should never get past this point
46 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
50 # . . vim:nowrap:textwidth=0