https://github.com/akkartik/mu/blob/master/subx/050_write.subx
1
2
3 == code
4
5
6
7
8 Entry:
9
10 bb/copy-to-EBX 0/imm32
11 b8/copy-to-EAX 1/imm32/exit
12 cd/syscall 0x80/imm8
13
14 _write:
15
16 55/push-EBP
17 89/copy 3/mod/direct 5/rm32/EBP . . . 4/r32/ESP . .
18
19 50/push-EAX
20 51/push-ECX
21 52/push-EDX
22 53/push-EBX
23
24
25 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 3/r32/EBX 8/disp8 .
26
27 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 1/r32/ECX 0xc/disp8 .
28 81 0/subop/add 3/mod/direct 1/rm32/ECX . . . . . 4/imm32
29
30 8b/copy 1/mod/*+disp8 5/rm32/EBP . . . 2/r32/EDX 0xc/disp8 .
31 8b/copy 0/mod/indirect 2/rm32/EDX . . . 2/r32/EDX . .
32
33 b8/copy-to-EAX 4/imm32/write
34 cd/syscall 0x80/imm8
35
36 3d/compare-EAX-with 0/imm32
37 0f 8c/jump-if-lesser $_write:abort/disp32
38 $_write:end:
39
40 5b/pop-to-EBX
41 5a/pop-to-EDX
42 59/pop-to-ECX
43 58/pop-to-EAX
44
45 89/copy 3/mod/direct 4/rm32/ESP . . . 5/r32/EBP . .
46 5d/pop-to-EBP
47 c3/return
48
49 $_write:abort:
50
51
52 bb/copy-to-EBX 0xff/imm32
53 b8/copy-to-EAX 1/imm32/exit
54 cd/syscall 0x80/imm8
55
56
57