1 ; 7zAsm.asm -- ASM macros
2 ; 2023-12-08 : Igor Pavlov : Public domain
5 ; UASM can require these changes
6 ; OPTION FRAMEPRESERVEFLAGS:ON
11 ; @wordsize is defined only in JWASM and ASMC and is not defined in MASM
12 ; @wordsize eq 8 for 64-bit x64
13 ; @wordsize eq 2 for 32-bit x86
37 ; Use ABI_CDECL for x86 (32-bit) only
38 ; if ABI_CDECL is not defined, we use fastcall abi
55 _TEXT$00 SEGMENT PARA PUBLIC 'CODE'
59 MY_PROC macro name:req, numParams:req
61 proc_numParams = numParams
64 elseif (IS_LINUX gt 0)
66 elseif (IS_CDECL gt 0)
67 proc_name equ @CatStr(_,name)
69 proc_name equ @CatStr(@,name,@, %numParams * 4)
77 elseif (IS_CDECL gt 0)
79 elseif (proc_numParams LT 3)
82 ret (proc_numParams - 2) * 4
224 ; for fastcall and for WIN-x64
233 REG_ABI_PARAM_0_x equ REG_PARAM_0_x
234 REG_ABI_PARAM_0 equ REG_PARAM_0
235 REG_ABI_PARAM_1_x equ REG_PARAM_1_x
236 REG_ABI_PARAM_1 equ REG_PARAM_1
238 MY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
242 MY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
256 REG_ABI_PARAM_0_x equ REG_PARAM_0_x
257 REG_ABI_PARAM_0 equ REG_PARAM_0
258 REG_ABI_PARAM_1_x equ REG_PARAM_1_x
259 REG_ABI_PARAM_1 equ REG_PARAM_1
260 REG_ABI_PARAM_2_x equ REG_PARAM_2_x
261 REG_ABI_PARAM_2 equ REG_PARAM_2
262 REG_ABI_PARAM_3 equ REG_PARAM_3
266 REG_LINUX_PARAM_0_x equ x7
267 REG_LINUX_PARAM_0 equ r7
268 REG_LINUX_PARAM_1_x equ x6
269 REG_LINUX_PARAM_1 equ r6
270 REG_LINUX_PARAM_2 equ r2
271 REG_LINUX_PARAM_3 equ r1
272 REG_LINUX_PARAM_4_x equ x8
273 REG_LINUX_PARAM_4 equ r8
274 REG_LINUX_PARAM_5 equ r9
276 REG_ABI_PARAM_0_x equ REG_LINUX_PARAM_0_x
277 REG_ABI_PARAM_0 equ REG_LINUX_PARAM_0
278 REG_ABI_PARAM_1_x equ REG_LINUX_PARAM_1_x
279 REG_ABI_PARAM_1 equ REG_LINUX_PARAM_1
280 REG_ABI_PARAM_2 equ REG_LINUX_PARAM_2
281 REG_ABI_PARAM_3 equ REG_LINUX_PARAM_3
282 REG_ABI_PARAM_4_x equ REG_LINUX_PARAM_4_x
283 REG_ABI_PARAM_4 equ REG_LINUX_PARAM_4
284 REG_ABI_PARAM_5 equ REG_LINUX_PARAM_5
286 MY_ABI_LINUX_TO_WIN_2 macro
291 MY_ABI_LINUX_TO_WIN_3 macro
297 MY_ABI_LINUX_TO_WIN_4 macro
307 MY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
315 MY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11 macro
324 MY_PUSH_PRESERVED_ABI_REGS macro
325 MY_PUSH_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11
333 MY_POP_PRESERVED_ABI_REGS macro
338 MY_POP_PRESERVED_ABI_REGS_UP_TO_INCLUDING_R11