mlibc: GNU Gcc support: setjmp, longjmp.
[mes.git] / stage0 / x86.M1
1 ### Mes --- Maxwell Equations of Software
2 ### Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
3 ###
4 ### This file is part of Mes.
5 ###
6 ### Mes is free software# you can redistribute it and/or modify it
7 ### under the terms of the GNU General Public License as published by
8 ### the Free Software Foundation# either version 3 of the License, or (at
9 ### your option) any later version.
10 ###
11 ### Mes is distributed in the hope that it will be useful, but
12 ### WITHOUT ANY WARRANTY# without even the implied warranty of
13 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 ### GNU General Public License for more details.
15 ###
16 ### You should have received a copy of the GNU General Public License
17 ### along with Mes.  If not, see <http://www.gnu.org/licenses/>.
18
19
20 DEFINE add____$i32,%eax 05
21 DEFINE add____$i32,%ecx 81c1
22 DEFINE add____$i32,%edx 81c2
23 DEFINE add____$i32,(%eax) 8100
24 DEFINE add____$i32,0x32(%eax) 8180
25 DEFINE add____$i32,0x32(%ebp) 8185
26 DEFINE add____$i8,%eax 83c0
27 DEFINE add____$i8,%edx 83c2
28 DEFINE add____$i8,%esp 83c4
29 DEFINE add____$i8,(%eax) 8300
30 DEFINE add____$i8,0x32 8305
31 DEFINE add____$i8,0x32(%eax) 8380
32 DEFINE add____$i8,0x32(%eax) 8380
33 DEFINE add____$i8,0x32(%ebp) 8385
34 DEFINE add____$i8,0x8(%eax) 8340
35 DEFINE add____$i8,0x8(%ebp) 8345
36 DEFINE add____%eax,%eax 01c0
37 DEFINE add____%ebp,%eax 01e8
38 DEFINE add____%edx,%eax 01d0
39 DEFINE add____%edx,%eax 01d0
40 DEFINE and____%edx,%eax 21d0
41 DEFINE call32 e8
42 DEFINE call___*%eax ffd0
43 DEFINE cmp____$0x32,%eax 3d
44 DEFINE cmp____$i32,%eax 3d
45 DEFINE cmp____$i32,0x32(%ebp) 81bd
46 DEFINE cmp____$i32,0x8(%ebp) 817d
47 DEFINE cmp____$i8,%eax 83f8
48 DEFINE cmp____$i8,0x32(%ebp) 83bd
49 DEFINE cmp____$i8,0x8(%ebp) 837d
50 DEFINE cmp____%al,%dl 38c2
51 DEFINE cmp____%edx,%eax 39d0
52 DEFINE hlt f4
53 DEFINE idiv___%ebx f7fb
54 DEFINE int cd
55 DEFINE int____$0x80 cd80
56 DEFINE je32 0f84
57 DEFINE je8 74
58 DEFINE jg32 0f8f
59 DEFINE jge32 0f8d
60 DEFINE jl32 0f8c
61 DEFINE jle32 0f8e
62 DEFINE jmp32 e9
63 DEFINE jmp____*%ebx ffe3
64 DEFINE jne32 0f85
65 DEFINE lahf 9f
66 DEFINE lea____0x32(%ebp),%eax 8d85
67 DEFINE lea____0x32(%ebp),%edx 8d95
68 DEFINE lea____0x8(%ebp),%eax 8d45
69 DEFINE lea____0x8(%ebp),%edx 8d55
70 DEFINE leave c9
71 DEFINE mov____$i32,%eax b8
72 DEFINE mov____$i32,%ebx bb
73 DEFINE mov____$i32,%ecx b9
74 DEFINE mov____$i32,%edx ba
75 DEFINE mov____$i32,(%eax) c700
76 DEFINE mov____$i32,0x32 c705
77 DEFINE mov____$i32,0x8(%eax) c740
78 DEFINE mov____$i32,0x8(%ebp) c745
79 DEFINE mov____%al,(%edx) 8802
80 DEFINE mov____%al,0x8(%edx) 8842
81 DEFINE mov____%ax,(%edx) 668902
82 DEFINE mov____%ax,0x32(%edx) 668982
83 DEFINE mov____%ax,0x8(%edx) 668942
84 DEFINE mov____%dl,(%eax) 8810
85 DEFINE mov____%dl,0x8(%eax) 8850
86 DEFINE mov____%eax,%ebx 89c3
87 DEFINE mov____%eax,%edx 89c2
88 DEFINE mov____%eax,(%ecx) 8901
89 DEFINE mov____%eax,(%edx) 8902
90 DEFINE mov____%eax,0x32 a3
91 DEFINE mov____%eax,0x32(%ebp) 8985
92 DEFINE mov____%eax,0x32(%edx) 8982
93 DEFINE mov____%eax,0x8(%ebp) 8945
94 DEFINE mov____%eax,0x8(%edx) 8942
95 DEFINE mov____%ebp,%eax 89e8
96 DEFINE mov____%ebp,%ecx 89e9
97 DEFINE mov____%ebp,%edx 89ea
98 DEFINE mov____%ebx,0x32 891d
99 DEFINE mov____%ebx,0x32(%ebp) 899d
100 DEFINE mov____%ebx,0x8(%ebp) 895d
101 DEFINE mov____%ebx,0x8(%edx) 895a
102 DEFINE mov____%ecx,(%eax) 8908
103 DEFINE mov____%ecx,(%edx) 890a
104 DEFINE mov____%ecx,0x32(%ebp) 898d
105 DEFINE mov____%ecx,0x8(%ebp) 894d
106 DEFINE mov____%edx,%eax 89d0
107 DEFINE mov____%edx,%ebx 89d3
108 DEFINE mov____%edx,%ecx 89d1
109 DEFINE mov____%edx,(%eax) 8910
110 DEFINE mov____%edx,0x32(%ebp) 8995
111 DEFINE mov____%edx,0x8(%ebp) 8955
112 DEFINE mov____%esp,%ebp 89e5
113 DEFINE mov____(%eax),%eax 8b00
114 DEFINE mov____(%eax),%ecx 8b08
115 DEFINE mov____(%edx),%ecx 8b0a
116 DEFINE mov____(%edx),%edx 8b12
117 DEFINE mov____0x32(%eax),%eax 8b80
118 DEFINE mov____0x32(%eax),%ebx 8b98
119 DEFINE mov____0x32(%eax),%ecx 8b88
120 DEFINE mov____0x32(%ebp),%eax 8b85
121 DEFINE mov____0x32(%ebp),%eax 8b85
122 DEFINE mov____0x32(%ebp),%ebx 8b9d
123 DEFINE mov____0x32(%ebp),%ecx 8b8d
124 DEFINE mov____0x32(%ebp),%edx 8b95
125 DEFINE mov____0x32(%ebp),%edx 8b95
126 DEFINE mov____0x32,%eax a1
127 DEFINE mov____0x32,%edx 8b15
128 DEFINE mov____0x8(%eax),%eax 8b40
129 DEFINE mov____0x8(%eax),%ebx 8b58
130 DEFINE mov____0x8(%eax),%ecx 8b48
131 DEFINE mov____0x8(%ebp),%eax 8b45
132 DEFINE mov____0x8(%ebp),%ebp 8b6d
133 DEFINE mov____0x8(%ebp),%ebx 8b5d
134 DEFINE mov____0x8(%ebp),%ecx 8b4d
135 DEFINE mov____0x8(%ebp),%edx 8b55
136 DEFINE mov____0x8(%ebp),%esp 8b65
137 DEFINE movzbl_%al,%eax 0fb6c0
138 DEFINE movzbl_%dl,%edx 0fb6d2
139 DEFINE movzbl_(%eax),%eax 0fb600
140 DEFINE movzbl_(%eax),%edx 0fb610
141 DEFINE movzbl_(%edx),%edx 0fb612
142 DEFINE movzbl_0x32(%eax),%eax 0fb680
143 DEFINE movzbl_0x32(%ebp),%eax 0fb685
144 DEFINE movzbl_0x8(%eax),%eax 0fb640
145 DEFINE movzbl_0x8(%ebp),%eax 0fb645
146 DEFINE movzbl_0x8(%ebp),%edx 0fb655
147 DEFINE movzwl_(%eax),%eax 0fb700
148 DEFINE movzwl_0x32(%eax),%eax 0fb780
149 DEFINE movzwl_0x8(%eax),%eax 0fb740
150 DEFINE mul____%edx f7e2
151 DEFINE nop 90
152 DEFINE not____%eax f7d0
153 DEFINE or_____%edx,%eax 09d0
154 DEFINE pop____%eax 58
155 DEFINE pop____%edx 5a
156 DEFINE push___$i32 68
157 DEFINE push___%eax 50
158 DEFINE push___%ebp 55
159 DEFINE push___%edx 52
160 DEFINE push___(%eax) ff30
161 DEFINE push___0x32(%ebp) ffb5
162 DEFINE push___0x8(%ebp) ff75
163 DEFINE ret c3
164 DEFINE sahf 9e
165 DEFINE sete___%al 0f94c0
166 DEFINE setg___%al 0f9fc0
167 DEFINE setge__%al 0f9dc0
168 DEFINE setl___%al 0f9cc0
169 DEFINE setle__%al 0f9ec0
170 DEFINE setne__%al 0f95c0
171 DEFINE shl____$i8,%eax c1e0
172 DEFINE shl____%cl,%eax d3e0
173 DEFINE shr____%cl,%eax d3e8
174 DEFINE sub____%al,%dl 28d0
175 DEFINE sub____%dl,%al 28c2
176 DEFINE sub____%eax,%edx 29c2
177 DEFINE sub____%edx,%eax 29d0
178 DEFINE sub____%edx,%eax 29d0
179 DEFINE sub____%esp,$i32 81ec
180 DEFINE sub____%esp,$i8 83ec
181 DEFINE test___%al,%al 84c0
182 DEFINE test___%eax,%eax 85c0
183 DEFINE xchg___%eax,(%esp) 870424
184 DEFINE xor____$i32,%eax 35
185 DEFINE xor____$i8,%ah 80f4
186 DEFINE xor____%eax,%eax 31c0
187 DEFINE xor____%ebx,%ebx 31db
188 DEFINE xor____%ecx,%ecx 31c9
189 DEFINE xor____%edx,%eax 31d0
190 DEFINE xor____%edx,%edx 31d2
191
192 DEFINE SYS_exit   01000000
193 DEFINE SYS_read   03000000
194 DEFINE SYS_write  04000000
195 DEFINE SYS_open   05000000
196 DEFINE SYS_close  06000000
197 DEFINE SYS_unlink 0a000000
198 DEFINE SYS_lseek  13000000
199 DEFINE SYS_access 21000000
200 DEFINE SYS_brk    2d000000
201 DEFINE SYS_fsync  76000000
202 DEFINE SYS_getcwd b7000000