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