mescc: Mes C Library: Add x86_64 libc support.
[mes.git] / lib / x86-mes / x86.M1
1 ### GNU Mes --- Maxwell Equations of Software
2 ### Copyright © 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
3 ###
4 ### This file is part of GNU 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 ### GNU 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 GNU Mes.  If not, see <http://www.gnu.org/licenses/>.
18
19 DEFINE add____$i32,%eax 05
20 DEFINE add____$i32,%ecx 81c1
21 DEFINE add____$i32,%edx 81c2
22 DEFINE add____$i32,(%eax) 8100
23 DEFINE add____$i32,0x32(%eax) 8180
24 DEFINE add____$i32,0x32(%ebp) 8185
25 DEFINE add____$i8,%eax 83c0
26 DEFINE add____$i8,%edx 83c2
27 DEFINE add____$i8,%esp 83c4
28 DEFINE add____$i8,(%eax) 8300
29 DEFINE add____$i8,0x32 8305
30 DEFINE add____$i8,0x32(%eax) 8380
31 DEFINE add____$i8,0x32(%eax) 8380
32 DEFINE add____$i8,0x32(%ebp) 8385
33 DEFINE add____$i8,0x8(%eax) 8340
34 DEFINE add____$i8,0x8(%ebp) 8345
35 DEFINE add____%eax,%eax 01c0
36 DEFINE add____%ebp,%eax 01e8
37 DEFINE add____%edx,%eax 01d0
38 DEFINE add____%edx,%eax 01d0
39 DEFINE and____$i32,%eax 25
40 DEFINE and____%edx,%eax 21d0
41 DEFINE and____(%edx),%eax 2302
42 DEFINE call32 e8
43 DEFINE call___*%eax ffd0
44 DEFINE cmp____$0x32,%eax 3d
45 DEFINE cmp____$i32,%eax 3d
46 DEFINE cmp____$i32,0x32(%ebp) 81bd
47 DEFINE cmp____$i32,0x8(%ebp) 817d
48 DEFINE cmp____$i8,%eax 83f8
49 DEFINE cmp____$i8,0x32(%ebp) 83bd
50 DEFINE cmp____$i8,0x8(%ebp) 837d
51 DEFINE cmp____%al,%dl 38c2
52 DEFINE cmp____%edx,%eax 39d0
53 DEFINE hlt f4
54 DEFINE idiv___%ebx f7fb
55 DEFINE int cd
56 DEFINE int____$0x80 cd80
57 DEFINE ja32  0f87
58 DEFINE jae32 0f83
59 DEFINE jb32  0f82
60 DEFINE jbe32 0f86
61 DEFINE je32 0f84
62 DEFINE je8 74
63 DEFINE jg32 0f8f
64 DEFINE jge32 0f8d
65 DEFINE jl32 0f8c
66 DEFINE jle32 0f8e
67 DEFINE jmp32 e9
68 DEFINE jmp____*%ebx ffe3
69 DEFINE jne32 0f85
70 DEFINE lahf 9f
71 DEFINE lea____0x32(%ebp),%eax 8d85
72 DEFINE lea____0x32(%ebp),%edx 8d95
73 DEFINE lea____0x8(%ebp),%eax 8d45
74 DEFINE lea____0x8(%ebp),%edx 8d55
75 DEFINE leave c9
76 DEFINE mov____$i32,%eax b8
77 DEFINE mov____$i32,%ebx bb
78 DEFINE mov____$i32,%ecx b9
79 DEFINE mov____$i32,%edx ba
80 DEFINE mov____$i32,(%eax) c700
81 DEFINE mov____$i32,0x32 c705
82 DEFINE mov____$i32,0x8(%eax) c740
83 DEFINE mov____$i32,0x8(%ebp) c745
84 DEFINE mov____%al,(%edx) 8802
85 DEFINE mov____%al,0x8(%edx) 8842
86 DEFINE mov____%ax,(%edx) 668902
87 DEFINE mov____%ax,0x32(%edx) 668982
88 DEFINE mov____%ax,0x8(%edx) 668942
89 DEFINE mov____%dl,(%eax) 8810
90 DEFINE mov____%dl,0x8(%eax) 8850
91 DEFINE mov____%eax,%ebx 89c3
92 DEFINE mov____%eax,%edx 89c2
93 DEFINE mov____%eax,(%ecx) 8901
94 DEFINE mov____%eax,(%edx) 8902
95 DEFINE mov____%eax,0x32 a3
96 DEFINE mov____%eax,0x32(%ebp) 8985
97 DEFINE mov____%eax,0x32(%edx) 8982
98 DEFINE mov____%eax,0x8(%ebp) 8945
99 DEFINE mov____%eax,0x8(%edx) 8942
100 DEFINE mov____%ebp,%eax 89e8
101 DEFINE mov____%ebp,%ecx 89e9
102 DEFINE mov____%ebp,%edx 89ea
103 DEFINE mov____%ebx,0x32 891d
104 DEFINE mov____%ebx,0x32(%ebp) 899d
105 DEFINE mov____%ebx,0x8(%ebp) 895d
106 DEFINE mov____%ebx,0x8(%edx) 895a
107 DEFINE mov____%ecx,(%eax) 8908
108 DEFINE mov____%ecx,(%edx) 890a
109 DEFINE mov____%ecx,0x32(%ebp) 898d
110 DEFINE mov____%ecx,0x8(%ebp) 894d
111 DEFINE mov____%edx,%eax 89d0
112 DEFINE mov____%edx,%ebx 89d3
113 DEFINE mov____%edx,%ecx 89d1
114 DEFINE mov____%edx,(%eax) 8910
115 DEFINE mov____%edx,0x32(%ebp) 8995
116 DEFINE mov____%edx,0x8(%ebp) 8955
117 DEFINE mov____%esp,%ebp 89e5
118 DEFINE mov____(%eax),%eax 8b00
119 DEFINE mov____(%eax),%ecx 8b08
120 DEFINE mov____(%edx),%eax 8b02
121 DEFINE mov____(%edx),%ecx 8b0a
122 DEFINE mov____(%edx),%edx 8b12
123 DEFINE mov____0x32(%eax),%eax 8b80
124 DEFINE mov____0x32(%eax),%ebx 8b98
125 DEFINE mov____0x32(%eax),%ecx 8b88
126 DEFINE mov____0x32(%ebp),%eax 8b85
127 DEFINE mov____0x32(%ebp),%eax 8b85
128 DEFINE mov____0x32(%ebp),%ebx 8b9d
129 DEFINE mov____0x32(%ebp),%ecx 8b8d
130 DEFINE mov____0x32(%ebp),%edx 8b95
131 DEFINE mov____0x32(%ebp),%edx 8b95
132 DEFINE mov____0x32,%eax a1
133 DEFINE mov____0x32,%edx 8b15
134 DEFINE mov____0x8(%eax),%eax 8b40
135 DEFINE mov____0x8(%eax),%ebx 8b58
136 DEFINE mov____0x8(%eax),%ecx 8b48
137 DEFINE mov____0x8(%ebp),%eax 8b45
138 DEFINE mov____0x8(%ebp),%ebp 8b6d
139 DEFINE mov____0x8(%ebp),%ebx 8b5d
140 DEFINE mov____0x8(%ebp),%ecx 8b4d
141 DEFINE mov____0x8(%ebp),%edx 8b55
142 DEFINE mov____0x8(%ebp),%esi 8b75
143 DEFINE mov____0x8(%ebp),%esp 8b65
144 DEFINE movsbl_%al,%eax 0fbec0
145 DEFINE movswl_%ax,%eax 0fbfc0
146 DEFINE movzbl_%al,%eax 0fb6c0
147 DEFINE movzbl_%al,%eax 0fb6c0
148 DEFINE movzbl_%dl,%edx 0fb6d2
149 DEFINE movzbl_(%eax),%eax 0fb600
150 DEFINE movzbl_(%eax),%edx 0fb610
151 DEFINE movzbl_(%edx),%edx 0fb612
152 DEFINE movzbl_0x32(%eax),%eax 0fb680
153 DEFINE movzbl_0x8(%eax),%eax 0fb640
154 DEFINE movzbl_0x8(%ebp),%eax 0fb645
155 DEFINE movzwl_%ax,%eax 0fb7c0
156 DEFINE movzwl_(%eax),%eax 0fb700
157 DEFINE movzwl_0x32(%eax),%eax 0fb780
158 DEFINE movzwl_0x32(%ebp),%eax 0fb785
159 DEFINE movzwl_0x8(%eax),%eax 0fb740
160 DEFINE mul____%edx f7e2
161 DEFINE nop 90
162 DEFINE not____%eax f7d0
163 DEFINE or_____%edx,%eax 09d0
164 DEFINE or_____(%edx),%eax 0b02
165 DEFINE pop____%eax 58
166 DEFINE pop____%edx 5a
167 DEFINE push___$i32 68
168 DEFINE push___%eax 50
169 DEFINE push___%ebp 55
170 DEFINE push___%edx 52
171 DEFINE push___(%eax) ff30
172 DEFINE push___0x32(%ebp) ffb5
173 DEFINE push___0x8(%ebp) ff75
174 DEFINE ret c3
175 DEFINE sahf 9e
176 DEFINE seta___%al 0f97c0
177 DEFINE setae__%al 0f93c0
178 DEFINE setb___%al 0f92c0
179 DEFINE setbe__%al 0f96c0
180 DEFINE sete___%al 0f94c0
181 DEFINE setg___%al 0f9fc0
182 DEFINE setge__%al 0f9dc0
183 DEFINE setl___%al 0f9cc0
184 DEFINE setle__%al 0f9ec0
185 DEFINE setne__%al 0f95c0
186 DEFINE shl____$i8,%eax c1e0
187 DEFINE shl____%cl,%eax d3e0
188 DEFINE shr____%cl,%eax d3e8
189 DEFINE sub____%al,%dl 28d0
190 DEFINE sub____%dl,%al 28c2
191 DEFINE sub____%eax,%edx 29c2
192 DEFINE sub____%edx,%eax 29d0
193 DEFINE sub____%edx,%eax 29d0
194 DEFINE sub____%esp,$i32 81ec
195 DEFINE sub____%esp,$i8 83ec
196 DEFINE test___%al,%al 84c0
197 DEFINE test___%eax,%eax 85c0
198 DEFINE xchg___%eax,(%esp) 870424
199 DEFINE xor____$i32,%eax 35
200 DEFINE xor____$i8,%ah 80f4
201 DEFINE xor____%eax,%eax 31c0
202 DEFINE xor____%ebx,%ebx 31db
203 DEFINE xor____%ecx,%ecx 31c9
204 DEFINE xor____%edx,%eax 31d0
205 DEFINE xor____%edx,%edx 31d2
206
207 DEFINE SYS_exit   01000000
208 DEFINE SYS_fork   02000000
209 DEFINE SYS_read   03000000
210 DEFINE SYS_rmdir  28000000
211 DEFINE SYS_write  04000000
212 DEFINE SYS_open   05000000
213 DEFINE SYS_close  06000000
214 DEFINE SYS_waitpid 07000000
215 DEFINE SYS_unlink 0a000000
216 DEFINE SYS_execve 0b000000
217 DEFINE SYS_chmod  0f000000
218 DEFINE SYS_lseek  13000000
219 DEFINE SYS_access 21000000
220 DEFINE SYS_brk    2d000000
221 DEFINE SYS_ioctl  36000000
222 DEFINE SYS_stat   6a000000
223 DEFINE SYS_fsync  76000000
224 DEFINE SYS_getcwd b7000000