diff options
Diffstat (limited to '')
-rw-r--r-- | Asm/x86/7zAsm.asm | 68 |
1 files changed, 60 insertions, 8 deletions
diff --git a/Asm/x86/7zAsm.asm b/Asm/x86/7zAsm.asm index 19c40da..8910d16 100644 --- a/Asm/x86/7zAsm.asm +++ b/Asm/x86/7zAsm.asm | |||
@@ -1,5 +1,5 @@ | |||
1 | ; 7zAsm.asm -- ASM macros | 1 | ; 7zAsm.asm -- ASM macros |
2 | ; 2022-05-16 : Igor Pavlov : Public domain | 2 | ; 2023-12-08 : Igor Pavlov : Public domain |
3 | 3 | ||
4 | 4 | ||
5 | ; UASM can require these changes | 5 | ; UASM can require these changes |
@@ -43,7 +43,7 @@ else | |||
43 | endif | 43 | endif |
44 | endif | 44 | endif |
45 | 45 | ||
46 | OPTION PROLOGUE:NONE | 46 | OPTION PROLOGUE:NONE |
47 | OPTION EPILOGUE:NONE | 47 | OPTION EPILOGUE:NONE |
48 | 48 | ||
49 | MY_ASM_START macro | 49 | MY_ASM_START macro |
@@ -121,10 +121,29 @@ endif | |||
121 | x2_H equ DH | 121 | x2_H equ DH |
122 | x3_H equ BH | 122 | x3_H equ BH |
123 | 123 | ||
124 | ; r0_L equ AL | ||
125 | ; r1_L equ CL | ||
126 | ; r2_L equ DL | ||
127 | ; r3_L equ BL | ||
128 | |||
129 | ; r0_H equ AH | ||
130 | ; r1_H equ CH | ||
131 | ; r2_H equ DH | ||
132 | ; r3_H equ BH | ||
133 | |||
134 | |||
124 | ifdef x64 | 135 | ifdef x64 |
125 | x5_L equ BPL | 136 | x5_L equ BPL |
126 | x6_L equ SIL | 137 | x6_L equ SIL |
127 | x7_L equ DIL | 138 | x7_L equ DIL |
139 | x8_L equ r8b | ||
140 | x9_L equ r9b | ||
141 | x10_L equ r10b | ||
142 | x11_L equ r11b | ||
143 | x12_L equ r12b | ||
144 | x13_L equ r13b | ||
145 | x14_L equ r14b | ||
146 | x15_L equ r15b | ||
128 | 147 | ||
129 | r0 equ RAX | 148 | r0 equ RAX |
130 | r1 equ RCX | 149 | r1 equ RCX |
@@ -153,6 +172,22 @@ else | |||
153 | r7 equ x7 | 172 | r7 equ x7 |
154 | endif | 173 | endif |
155 | 174 | ||
175 | x0_R equ r0 | ||
176 | x1_R equ r1 | ||
177 | x2_R equ r2 | ||
178 | x3_R equ r3 | ||
179 | x4_R equ r4 | ||
180 | x5_R equ r5 | ||
181 | x6_R equ r6 | ||
182 | x7_R equ r7 | ||
183 | x8_R equ r8 | ||
184 | x9_R equ r9 | ||
185 | x10_R equ r10 | ||
186 | x11_R equ r11 | ||
187 | x12_R equ r12 | ||
188 | x13_R equ r13 | ||
189 | x14_R equ r14 | ||
190 | x15_R equ r15 | ||
156 | 191 | ||
157 | ifdef x64 | 192 | ifdef x64 |
158 | ifdef ABI_LINUX | 193 | ifdef ABI_LINUX |
@@ -200,6 +235,14 @@ REG_ABI_PARAM_0 equ REG_PARAM_0 | |||
200 | REG_ABI_PARAM_1_x equ REG_PARAM_1_x | 235 | REG_ABI_PARAM_1_x equ REG_PARAM_1_x |
201 | REG_ABI_PARAM_1 equ REG_PARAM_1 | 236 | REG_ABI_PARAM_1 equ REG_PARAM_1 |
202 | 237 | ||
238 | MY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro | ||
239 | MY_PUSH_4_REGS | ||
240 | endm | ||
241 | |||
242 | MY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro | ||
243 | MY_POP_4_REGS | ||
244 | endm | ||
245 | |||
203 | else | 246 | else |
204 | ; x64 | 247 | ; x64 |
205 | 248 | ||
@@ -261,12 +304,25 @@ endm | |||
261 | endif ; IS_LINUX | 304 | endif ; IS_LINUX |
262 | 305 | ||
263 | 306 | ||
264 | MY_PUSH_PRESERVED_ABI_REGS macro | 307 | MY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro |
265 | if (IS_LINUX gt 0) | 308 | if (IS_LINUX gt 0) |
266 | MY_PUSH_2_REGS | 309 | MY_PUSH_2_REGS |
267 | else | 310 | else |
268 | MY_PUSH_4_REGS | 311 | MY_PUSH_4_REGS |
269 | endif | 312 | endif |
313 | endm | ||
314 | |||
315 | MY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro | ||
316 | if (IS_LINUX gt 0) | ||
317 | MY_POP_2_REGS | ||
318 | else | ||
319 | MY_POP_4_REGS | ||
320 | endif | ||
321 | endm | ||
322 | |||
323 | |||
324 | MY_PUSH_PRESERVED_ABI_REGS macro | ||
325 | MY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 | ||
270 | push r12 | 326 | push r12 |
271 | push r13 | 327 | push r13 |
272 | push r14 | 328 | push r14 |
@@ -279,11 +335,7 @@ MY_POP_PRESERVED_ABI_REGS macro | |||
279 | pop r14 | 335 | pop r14 |
280 | pop r13 | 336 | pop r13 |
281 | pop r12 | 337 | pop r12 |
282 | if (IS_LINUX gt 0) | 338 | MY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 |
283 | MY_POP_2_REGS | ||
284 | else | ||
285 | MY_POP_4_REGS | ||
286 | endif | ||
287 | endm | 339 | endm |
288 | 340 | ||
289 | endif ; x64 | 341 | endif ; x64 |