1
2
3 == code
4
5
6
7
8
9 e8/call run-tests/disp32
10
11 8b/copy 0/mod/indirect 5/rm32/.disp32 3/r32/EBX Num-test-failures/disp32
12 b8/copy-to-EAX 1/imm32
13 cd/syscall 0x80/imm8
14
15 string-equal:
16
17 55/push-EBP
18 89/copy 3/mod/direct 5/rm32/EBP 4/r32/ESP
19
20 51/push-ECX
21 52/push-EDX
22 53/push-EBX
23 56/push-ESI
24
25
26
27
28
29
30
31
32
33
34
35
36
37 8b/copy 1/mod/*+disp8 4/rm32/sib 5/base/EBP 4/index/none 0/r32/EAX 8/disp8
38
39 8b/copy 1/mod/*+disp8 4/rm32/sib 5/base/EBP 4/index/none 3/r32/EBX 0xc/disp8
40
41
42 8b/copy 0/mod/indirect 0/rm32/EAX 2/r32/EDX
43
44 39/compare 0/mod/indirect 3/rm32/EBX 2/r32/EDX
45 75/jump-if-not-equal $string-equal:false/disp8
46 $string-equal:lengths:
47
48 b9/copy-to-ECX 0/imm32
49
50 43/inc-EBX
51
52 40/inc-EAX
53 $string-equal:loop:
54
55 39/compare 3/mod/direct 1/rm32/ECX 2/r32/EDX
56 7d/jump-if-greater-or-equal $string-equal:true/disp8
57
58
59 8b/copy 0/mod/indirect 0/rm32/EAX 6/r32/ESI
60
61 39/compare 0/mod/indirect 3/rm32/EBX 6/r32/ESI
62 75/jump-if-not-equal $string-equal:false/disp8
63
64 41/inc-ECX
65 40/inc-EAX
66 43/inc-EBX
67
68 eb/jump $string-equal:loop/disp8
69 $string-equal:true:
70
71 b8/copy-to-EAX 1/imm32
72 eb/jump $string-equal:end/disp8
73 $string-equal:false:
74
75 b8/copy-to-EAX 0/imm32
76 $string-equal:end:
77
78 5e/pop-to-ESI
79 5b/pop-to-EBX
80 5a/pop-to-EDX
81 59/pop-to-ECX
82
83 89/copy 3/mod/direct 4/rm32/ESP 5/r32/EBP
84 5d/pop-to-EBP
85 c3/return
86
87
88
89 test-compare-empty-with-empty-string:
90
91
92 68/push ""/imm32
93 68/push ""/imm32
94
95 e8/call string-equal/disp32
96
97 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
98
99
100 68/push "F - test-compare-empty-with-empty-string"/imm32
101 68/push 1/imm32/true
102 50/push-EAX
103
104 e8/call check-ints-equal/disp32
105
106 81 0/subop/add 3/mod/direct 4/rm32/ESP 0xc/imm32
107 c3/return
108
109 test-compare-empty-with-non-empty-string:
110
111
112 68/push "Abc"/imm32
113 68/push ""/imm32
114
115 e8/call string-equal/disp32
116
117 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
118
119
120 68/push "F - test-compare-empty-with-non-empty-string"/imm32
121 68/push 0/imm32/false
122 50/push-EAX
123
124 e8/call check-ints-equal/disp32
125
126 81 0/subop/add 3/mod/direct 4/rm32/ESP 0xc/imm32
127 c3/return
128
129 test-compare-equal-strings:
130
131
132 68/push "Abc"/imm32
133 68/push "Abc"/imm32
134
135 e8/call string-equal/disp32
136
137 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
138
139
140 68/push "F - test-compare-equal-strings"/imm32
141 68/push 1/imm32/true
142 50/push-EAX
143
144 e8/call check-ints-equal/disp32
145
146 81 0/subop/add 3/mod/direct 4/rm32/ESP 0xc/imm32
147 c3/return
148
149 test-compare-inequal-strings-equal-lengths:
150
151
152 68/push "Adc"/imm32
153 68/push "Abc"/imm32
154
155 e8/call string-equal/disp32
156
157 81 0/subop/add 3/mod/direct 4/rm32/ESP 8/imm32
158
159
160 68/push "F - test-compare-inequal-strings-equal-lengths"/imm32
161 68/push 0/imm32/false
162 50/push-EAX
163
164 e8/call check-ints-equal/disp32
165
166 81 0/subop/add 3/mod/direct 4/rm32/ESP 0xc/imm32
167 c3/return
168
169