https://github.com/akkartik/mu/blob/master/subx/063hex.subx
1
2
3
4 == code
5
6
7
8
9
10 e8/call run-tests/disp32
11
12 8b/copy 0/mod/indirect 5/rm32/.disp32 . . 3/r32/EBX Num-test-failures/disp32
13 b8/copy-to-EAX 1/imm32/exit
14 cd/syscall 0x80/imm8
15
16 is-hex-int?:
17
18 55/push-EBP
19 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
20
21 51/push-ECX
22 52/push-EDX
23 53/push-EBX
24
25 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 1/r32/ECX 8/disp8 .
26
27 8b/copy 1/mod/*+disp8 1/rm32/ECX . . . 2/r32/EDX 4/disp8 .
28
29 8b/copy 0/mod/indirect 1/rm32/ECX . . . 1/r32/ECX . .
30
31 b8/copy-to-EAX 0/imm32/false
32 39/compare 3/mod/direct 1/rm32/ECX . . . 2/r32/EDX . .
33 7d/jump-if-greater-or-equal $is-hex-int?:end/disp8
34
35 $is-hex-int?:initial-0:
36
37 31/xor 3/mod/direct 3/rm32/EBX . . . 3/r32/EBX . .
38 8a/copy-byte 0/mod/indirect 1/rm32/ECX . . . 3/r32/BL . .
39 81 7/subop/compare 3/mod/direct 3/rm32/EBX . . . . . 0x30/imm32/0
40 75/jump-if-not-equal $is-hex-int?:loop/disp8
41
42 41/increment-ECX
43 $is-hex-int?:initial-0x:
44
45 39/compare 3/mod/direct 1/rm32/ECX . . . 2/r32/EDX . .
46 7d/jump-if-greater-or-equal $is-hex-int?:true/disp8
47
48 31/xor 3/mod/direct 3/rm32/EBX . . . 3/r32/EBX . .
49 8a/copy-byte 0/mod/indirect 1/rm32/ECX . . . 3/r32/BL . .
50 81 7/subop/compare 3/mod/direct 3/rm32/EBX . . . . . 0x78/imm32/x
51 75/jump-if-not-equal $is-hex-int?:loop/disp8
52
53 41/increment-ECX
54 $is-hex-int?:loop:
55
56 39/compare 3/mod/direct 1/rm32/ECX . . . 2/r32/EDX . .
57 7d/jump-if-greater-or-equal $is-hex-int?:true/disp8
58
59
60 8a/copy-byte 0/mod/indirect 1/rm32/ECX . . . 0/r32/AL . .
61 50/push-EAX
62
63 e8/call is-hex-digit?/disp32
64
65 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
66
67 3d/compare-with-EAX 0/imm32
68 74/jump-if-equal $is-hex-int?:end/disp8
69
70 41/increment-ECX
71
72 eb/jump $is-hex-int?:loop/disp8
73 $is-hex-int?:true:
74
75 b8/copy-to-EAX 1/imm32/true
76 $is-hex-int?:end:
77
78 5b/pop-to-EBX
79 5a/pop-to-EDX
80 59/pop-to-ECX
81
82 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
83 5d/pop-to-EBP
84 c3/return
85
86 test-is-hex-int:
87
88 55/push-EBP
89 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
90
91 68/push _test-slice-hex-int-end/imm32
92 68/push _test-slice-hex-int/imm32
93 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
94
95
96 51/push-ECX
97
98 e8/call is-hex-int?/disp32
99
100 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
101
102
103 68/push "F - test-is-hex-int"/imm32
104 68/push 1/imm32/true
105 50/push-EAX
106
107 e8/call check-ints-equal/disp32
108
109 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
110
111 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
112 5d/pop-to-EBP
113 c3/return
114
115 test-is-hex-int-handles-letters:
116
117 55/push-EBP
118 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
119
120 68/push _test-slice-hex-int-letters-end/imm32
121 68/push _test-slice-hex-int-letters/imm32
122 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
123
124
125 51/push-ECX
126
127 e8/call is-hex-int?/disp32
128
129 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
130
131
132 68/push "F - test-is-hex-int-handles-letters"/imm32
133 68/push 1/imm32/true
134 50/push-EAX
135
136 e8/call check-ints-equal/disp32
137
138 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
139
140 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
141 5d/pop-to-EBP
142 c3/return
143
144 test-is-hex-int-with-trailing-char:
145
146 55/push-EBP
147 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
148
149 68/push _test-slice-digits-and-char-end/imm32
150 68/push _test-slice-digits-and-char/imm32
151 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
152
153
154 51/push-ECX
155
156 e8/call is-hex-int?/disp32
157
158 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
159
160
161 68/push "F - test-is-hex-int-with-trailing-char"/imm32
162 68/push 0/imm32/false
163 50/push-EAX
164
165 e8/call check-ints-equal/disp32
166
167 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
168
169 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
170 5d/pop-to-EBP
171 c3/return
172
173 test-is-hex-int-with-leading-char:
174
175 55/push-EBP
176 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
177
178 68/push _test-slice-char-and-digits-end/imm32
179 68/push _test-slice-char-and-digits/imm32
180 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
181
182
183 51/push-ECX
184
185 e8/call is-hex-int?/disp32
186
187 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
188
189
190 68/push "F - test-is-hex-int-with-leading-char"/imm32
191 68/push 0/imm32/false
192 50/push-EAX
193
194 e8/call check-ints-equal/disp32
195
196 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
197
198 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
199 5d/pop-to-EBP
200 c3/return
201
202 test-is-hex-int-empty:
203
204 55/push-EBP
205 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
206
207 68/push _test-slice-empty-end/imm32
208 68/push _test-slice-empty/imm32
209 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
210
211
212 51/push-ECX
213
214 e8/call is-hex-int?/disp32
215
216 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
217
218
219 68/push "F - test-is-hex-int-empty"/imm32
220 68/push 0/imm32/false
221 50/push-EAX
222
223 e8/call check-ints-equal/disp32
224
225 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
226
227 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
228 5d/pop-to-EBP
229 c3/return
230
231 test-is-hex-int-handles-0x-prefix:
232
233 55/push-EBP
234 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
235
236 68/push _test-slice-hex-int-with-0x-prefix-end/imm32
237 68/push _test-slice-hex-int-with-0x-prefix/imm32
238 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
239
240
241 51/push-ECX
242
243 e8/call is-hex-int?/disp32
244
245 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
246
247
248 68/push "F - test-is-hex-int-handles-0x-prefix"/imm32
249 68/push 1/imm32/true
250 50/push-EAX
251
252 e8/call check-ints-equal/disp32
253
254 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
255
256 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
257 5d/pop-to-EBP
258 c3/return
259
260 parse-hex-int:
261
262 55/push-EBP
263 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
264
265 51/push-ECX
266 52/push-EDX
267 53/push-EBX
268 56/push-ESI
269
270 31/xor 3/mod/direct 3/rm32/EBX . . . 3/r32/EBX . .
271
272 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 1/r32/ECX 8/disp8 .
273
274 8b/copy 1/mod/*+disp8 1/rm32/ECX . . . 2/r32/EDX 4/disp8 .
275
276 8b/copy 0/mod/indirect 1/rm32/ECX . . . 1/r32/ECX . .
277
278 31/xor 3/mod/direct 6/rm32/ESI . . . 6/r32/ESI . .
279 $parse-hex-int:negative:
280
281 31/xor 3/mod/direct 0/rm32/EAX . . . 0/r32/EAX . .
282 8a/copy-byte 0/mod/indirect 1/rm32/ECX . . . 0/r32/AL . .
283 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0x2d/imm32/-
284 75/jump-if-not-equal $parse-hex-int:initial-0/disp8
285
286 41/increment-ECX
287
288 be/copy-to-ESI 1/imm32/true
289 $parse-hex-int:initial-0:
290
291
292 8a/copy-byte 0/mod/indirect 1/rm32/ECX . . . 0/r32/AL . .
293 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0x30/imm32/0
294 75/jump-if-not-equal $parse-hex-int:loop/disp8
295
296 41/increment-ECX
297 $parse-hex-int:initial-0x:
298
299 39/compare 3/mod/direct 1/rm32/ECX . . . 2/r32/EDX . .
300 7d/jump-if-greater-or-equal $parse-hex-int:end/disp8
301
302 31/xor 3/mod/direct 0/rm32/EAX . . . 0/r32/EAX . .
303 8a/copy-byte 0/mod/indirect 1/rm32/ECX . . . 0/r32/AL . .
304 81 7/subop/compare 3/mod/direct 0/rm32/EAX . . . . . 0x78/imm32/x
305 75/jump-if-not-equal $parse-hex-int:loop/disp8
306
307 41/increment-ECX
308 $parse-hex-int:loop:
309
310 39/compare 3/mod/direct 1/rm32/ECX . . . 2/r32/EDX . .
311 7d/jump-if-greater-or-equal $parse-hex-int:negate/disp8
312
313
314 8a/copy-byte 0/mod/indirect 1/rm32/ECX . . . 0/r32/AL . .
315
316 e8/call from-hex-char/disp32
317
318 c1/shift 4/subop/left 3/mod/direct 3/rm32/EBX . . . . . 4/imm8
319 01/add 3/mod/direct 3/rm32/EBX . . . 0/r32/EAX . .
320
321 41/increment-ECX
322
323 eb/jump $parse-hex-int:loop/disp8
324 $parse-hex-int:negate:
325 81 7/subop/compare 3/mod/direct 6/rm32/ESI . . . . . 0/imm32
326 74/jump-if-equal $parse-hex-int:end/disp8
327 f7 3/subop/negate 3/mod/direct 3/rm32/EBX . . . . . .
328 $parse-hex-int:end:
329 89/copy 3/mod/direct 0/rm32/EAX . . . 3/r32/EBX . .
330
331 5e/pop-to-ESI
332 5b/pop-to-EBX
333 5a/pop-to-EDX
334 59/pop-to-ECX
335
336 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
337 5d/pop-to-EBP
338 c3/return
339
340 test-parse-hex-int-single-digit:
341
342 55/push-EBP
343 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
344
345 68/push _test-slice-hex-int-single-letter-end/imm32
346 68/push _test-slice-hex-int-single-letter/imm32
347 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
348
349
350 51/push-ECX
351
352 e8/call parse-hex-int/disp32
353
354 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
355
356
357 68/push "F - test-parse-hex-int-single-digit"/imm32
358 68/push 0xa/imm32
359 50/push-EAX
360
361 e8/call check-ints-equal/disp32
362
363 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
364
365 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
366 5d/pop-to-EBP
367 c3/return
368
369 test-parse-hex-int-multi-digit:
370
371 55/push-EBP
372 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
373
374 68/push _test-slice-hex-int-letters-end/imm32
375 68/push _test-slice-hex-int-letters/imm32
376 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
377
378
379 51/push-ECX
380
381 e8/call parse-hex-int/disp32
382
383 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
384
385
386 68/push "F - test-parse-hex-int-multi-digit"/imm32
387 68/push 0x34a/imm32
388 50/push-EAX
389
390 e8/call check-ints-equal/disp32
391
392 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
393
394 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
395 5d/pop-to-EBP
396 c3/return
397
398 test-parse-hex-int-0x-prefix:
399
400 55/push-EBP
401 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
402
403 68/push _test-slice-hex-int-with-0x-prefix-end/imm32
404 68/push _test-slice-hex-int-with-0x-prefix/imm32
405 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
406
407
408 51/push-ECX
409
410 e8/call parse-hex-int/disp32
411
412 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
413
414
415 68/push "F - test-parse-hex-int-0x-prefix"/imm32
416 68/push 0x34/imm32
417 50/push-EAX
418
419 e8/call check-ints-equal/disp32
420
421 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
422
423 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
424 5d/pop-to-EBP
425 c3/return
426
427 test-parse-hex-int-zero:
428
429 55/push-EBP
430 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
431
432 68/push _test-slice-hex-int-zero-end/imm32
433 68/push _test-slice-hex-int-zero/imm32
434 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
435
436
437 51/push-ECX
438
439 e8/call parse-hex-int/disp32
440
441 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
442
443
444 68/push "F - test-parse-hex-int-zero"/imm32
445 68/push 0/imm32
446 50/push-EAX
447
448 e8/call check-ints-equal/disp32
449
450 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
451
452 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
453 5d/pop-to-EBP
454 c3/return
455
456 test-parse-hex-int-0-prefix:
457
458 55/push-EBP
459 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
460
461 68/push _test-slice-hex-int-with-0-prefix-end/imm32
462 68/push _test-slice-hex-int-with-0-prefix/imm32
463 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
464
465
466 51/push-ECX
467
468 e8/call parse-hex-int/disp32
469
470 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
471
472
473 68/push "F - test-parse-hex-int-0-prefix"/imm32
474 68/push 0x3/imm32
475 50/push-EAX
476
477 e8/call check-ints-equal/disp32
478
479 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
480
481 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
482 5d/pop-to-EBP
483 c3/return
484
485 test-parse-hex-int-negative:
486
487 55/push-EBP
488 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
489
490 68/push _test-slice-hex-int-negative-with-0-prefix-end/imm32
491 68/push _test-slice-hex-int-negative-with-0-prefix/imm32
492 89/copy 3/mod/direct 1/rm32/ECX . . . 4/r32/ESP . .
493
494
495 51/push-ECX
496
497 e8/call parse-hex-int/disp32
498
499 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
500
501
502 68/push "F - test-parse-hex-int-negative"/imm32
503 68/push 0xfffffffd/imm32
504 50/push-EAX
505
506 e8/call check-ints-equal/disp32
507
508 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
509
510 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
511 5d/pop-to-EBP
512 c3/return
513
514 is-hex-digit?:
515
516 55/push-EBP
517 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
518
519 51/push-ECX
520
521 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 1/r32/ECX 8/disp8 .
522
523 b8/copy-to-EAX 0/imm32/false
524 81 7/subop/compare 3/mod/direct 1/rm32/ECX . . . . . 0x30/imm32
525 7c/jump-if-lesser $is-hex-digit?:end/disp8
526
527 81 7/subop/compare 3/mod/direct 1/rm32/ECX . . . . . 0x66/imm32
528 7f/jump-if-greater $is-hex-digit?:end/disp8
529
530 b8/copy-to-EAX 1/imm32/true
531 81 7/subop/compare 3/mod/direct 1/rm32/ECX . . . . . 0x39/imm32
532 7e/jump-if-lesser-or-equal $is-hex-digit?:end/disp8
533
534 81 7/subop/compare 3/mod/direct 1/rm32/ECX . . . . . 0x61/imm32
535 7d/jump-if-greater-or-equal $is-hex-digit?:end/disp8
536
537 b8/copy-to-EAX 0/imm32/false
538 $is-hex-digit?:end:
539
540 59/pop-to-ECX
541
542 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
543 5d/pop-to-EBP
544 c3/return
545
546 test-hex-below-0:
547
548
549 68/push 0x2f/imm32
550
551 e8/call is-hex-digit?/disp32
552
553 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
554
555
556 68/push "F - test-hex-below-0"/imm32
557 68/push 0/imm32/false
558 50/push-EAX
559
560 e8/call check-ints-equal/disp32
561
562 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
563 c3/return
564
565 test-hex-0-to-9:
566
567
568 68/push 0x30/imm32
569
570 e8/call is-hex-digit?/disp32
571
572 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
573
574
575 68/push "F - test-hex-at-0"/imm32
576 68/push 1/imm32/true
577 50/push-EAX
578
579 e8/call check-ints-equal/disp32
580
581 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
582
583
584 68/push 0x39/imm32
585
586 e8/call is-hex-digit?/disp32
587
588 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
589
590
591 68/push "F - test-hex-at-9"/imm32
592 68/push 1/imm32/true
593 50/push-EAX
594
595 e8/call check-ints-equal/disp32
596
597 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
598 c3/return
599
600 test-hex-above-9-to-a:
601
602
603 68/push 0x3a/imm32
604
605 e8/call is-hex-digit?/disp32
606
607 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
608
609
610 68/push "F - test-hex-above-9-to-a"/imm32
611 68/push 0/imm32/false
612 50/push-EAX
613
614 e8/call check-ints-equal/disp32
615
616 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
617 c3/return
618
619 test-hex-a-to-f:
620
621
622 68/push 0x61/imm32
623
624 e8/call is-hex-digit?/disp32
625
626 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
627
628
629 68/push "F - test-hex-at-a"/imm32
630 68/push 1/imm32/true
631 50/push-EAX
632
633 e8/call check-ints-equal/disp32
634
635 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
636
637
638 68/push 0x66/imm32
639
640 e8/call is-hex-digit?/disp32
641
642 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
643
644
645 68/push "F - test-hex-at-f"/imm32
646 68/push 1/imm32/true
647 50/push-EAX
648
649 e8/call check-ints-equal/disp32
650
651 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
652 c3/return
653
654 test-hex-above-f:
655
656
657 68/push 0x67/imm32
658
659 e8/call is-hex-digit?/disp32
660
661 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 4/imm32
662
663
664 68/push "F - test-hex-above-f"/imm32
665 68/push 0/imm32/false
666 50/push-EAX
667
668 e8/call check-ints-equal/disp32
669
670 81 0/subop/add 3/mod/direct 4/rm32/ESP . . . . . 0xc/imm32
671 c3/return
672
673 from-hex-char:
674
675
676 3d/compare-EAX 0x39/imm32/9
677 7f/jump-if-greater $from-hex-char:else/disp8
678 2d/subtract-from-EAX 0x30/imm32/0
679 c3/return
680 $from-hex-char:else:
681
682 2d/subtract-from-EAX 0x57/imm32/a-10
683 c3/return
684
685 to-hex-char:
686
687
688 3d/compare-EAX 0x9/imm32/9
689 7f/jump-if-greater $to-hex-char:else/disp8
690 05/add-to-EAX 0x30/imm32/0
691 c3/return
692 $to-hex-char:else:
693
694 05/add-to-EAX 0x57/imm32/a-10
695 c3/return
696
697 == data
698
699 _test-slice-empty:
700
701 _test-slice-empty-end:
702
703 _test-slice-hex-int:
704 33/3 34/4
705 _test-slice-hex-int-end:
706
707 _test-slice-hex-int-letters:
708 33/3 34/4 61/a
709 _test-slice-hex-int-letters-end:
710
711 _test-slice-hex-int-single-letter:
712 61/a
713 _test-slice-hex-int-single-letter-end:
714
715 _test-slice-char-and-digits:
716 71/q 33/3 34/4
717 _test-slice-char-and-digits-end:
718
719 _test-slice-digits-and-char:
720 33/3 34/4 71/q
721 _test-slice-digits-and-char-end:
722
723 _test-slice-hex-int-with-0x-prefix:
724 30/0 78/x 33/3 34/4
725 _test-slice-hex-int-with-0x-prefix-end:
726
727 _test-slice-hex-int-zero:
728 30/0
729 _test-slice-hex-int-zero-end:
730
731 _test-slice-hex-int-with-0-prefix:
732 30/0 33/3
733 _test-slice-hex-int-with-0-prefix-end:
734
735 _test-slice-hex-int-negative-with-0-prefix:
736 2d/- 30/0 33/3
737 _test-slice-hex-int-negative-with-0-prefix-end:
738
739