https://github.com/akkartik/mu/blob/main/125write-stream-data.subx
1 == code
2
3
4
5
6
7
8
9
10
11 write-stream-data:
12
13 55/push-ebp
14 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
15
16 50/push-eax
17 51/push-ecx
18 56/push-esi
19
20 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 6/r32/esi 0xc/disp8 .
21
22
23 8b/copy 0/mod/indirect 6/rm32/esi . . . 0/r32/eax . .
24 8d/copy-address 1/mod/*+disp8 4/rm32/sib 6/base/esi 0/index/eax . 0/r32/eax 0xc/disp8 .
25 50/push-eax
26
27 8d/copy-address 1/mod/*+disp8 6/rm32/esi . . . 0/r32/eax 0xc/disp8 .
28 50/push-eax
29
30 89/copy 3/mod/direct 1/rm32/ecx . . . 4/r32/esp . .
31
32
33 51/push-ecx
34 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 .
35
36 e8/call write-slice-buffered/disp32
37
38 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32
39 $write-stream-data:end:
40
41 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32
42
43 5e/pop-to-esi
44 59/pop-to-ecx
45 58/pop-to-eax
46
47 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
48 5d/pop-to-ebp
49 c3/return
50
51 test-write-stream-data:
52
53 55/push-ebp
54 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . .
55
56
57
58 68/push _test-output-stream/imm32
59
60 e8/call clear-stream/disp32
61
62 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32
63
64
65 68/push $_test-output-buffered-file->buffer/imm32
66
67 e8/call clear-stream/disp32
68
69 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32
70
71
72 68/push _test-input-stream/imm32
73
74 e8/call clear-stream/disp32
75
76 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32
77
78
79
80 68/push "abcd"/imm32
81 68/push _test-input-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 68/push _test-input-stream/imm32
89 68/push _test-output-buffered-file/imm32
90
91 e8/call write-stream-data/disp32
92
93 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32
94
95
96
97 68/push _test-output-buffered-file/imm32
98
99 e8/call flush/disp32
100
101 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32
102
103
104 68/push "F - test-write-stream-data"/imm32
105 68/push "abcd"/imm32
106 68/push _test-output-stream/imm32
107
108 e8/call check-stream-equal/disp32
109
110 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32
111
112 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . .
113 5d/pop-to-ebp
114 c3/return