https://github.com/akkartik/mu/blob/master/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