1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 == code
17
18
19
20
21
22
23
24 68/push "Integer"/imm32
25
26 e8/call abort/disp32
27
28 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
29
30 bb/copy . . . . . . . 0/imm32
31 b8/copy . . . . . . . 1/imm32/exit
32 cd/syscall 0x80/imm8
33
34
35
36
37
38 abort:
39
40
41 ff 6/subop/push 1/mod/*+disp8 4/rm32/sib 4/base/ESP 4/index/none . . 4/disp8 .
42
43 e8/call error/disp32
44
45 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
46
47 bb/copy . . . . . . . 1/imm32
48 b8/copy . . . . . . . 1/imm32/exit
49 cd/syscall 0x80/imm8
50
51
52 error:
53
54
55 68/push "Error: "/imm32
56
57 e8/call write_stderr/disp32
58
59 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
60
61
62 ff 6/subop/push 1/mod/*+disp8 4/rm32/sib 4/base/ESP 4/index/none . . 4/disp8 .
63
64 e8/call write_stderr/disp32
65
66 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
67
68
69 68/push " expected"/imm32
70
71 e8/call write_stderr/disp32
72
73 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
74
75
76 68/push Newline/imm32
77
78 e8/call write_stderr/disp32
79
80 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
81
82 c3/return
83
84 write_stdout:
85
86 55/push-EBP
87 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
88
89 50/push-EAX
90 51/push-ECX
91 52/push-EDX
92 53/push-EBX
93
94
95 bb/copy . . . . . . . 1/imm32
96
97 8b/copy 1/mod/*+disp8 4/rm32/SIB 5/base/EBP 4/index/none . 1/r32/ECX 8/disp8 .
98 81 0/subop/add 3/mod/direct 1/rm32/ECX . . . . . 4/imm32
99
100 8b/copy 1/mod/*+disp8 4/rm32/SIB 5/base/EBP 4/index/none . 2/r32/EDX 8/disp8 .
101 8b/copy 0/mod/indirect 2/rm32/EDX . . . 2/r32/EDX . .
102
103 b8/copy . . . . . . . 4/imm32/write
104 cd/syscall 0x80/imm8
105
106 5b/pop-to-EBX
107 5a/pop-to-EDX
108 59/pop-to-ECX
109 58/pop-to-EAX
110
111 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
112 5d/pop-to-EBP
113 c3/return
114
115