101 lines
1.5 KiB
NASM
101 lines
1.5 KiB
NASM
; 7zAsm.asm -- ASM macros
|
|
; 2009-12-12 : Igor Pavlov : Public domain
|
|
; 2011-10-12 : P7ZIP : Public domain
|
|
|
|
%define NOT ~
|
|
|
|
%macro MY_ASM_START 0
|
|
SECTION .text
|
|
%endmacro
|
|
|
|
%macro MY_PROC 2 ; macro name:req, numParams:req
|
|
align 16
|
|
%define proc_numParams %2 ; numParams
|
|
global %1
|
|
global _%1
|
|
%1:
|
|
_%1:
|
|
%endmacro
|
|
|
|
%macro MY_ENDP 0
|
|
%ifdef x64
|
|
ret
|
|
; proc_name ENDP
|
|
%else
|
|
ret ; (proc_numParams - 2) * 4
|
|
%endif
|
|
%endmacro
|
|
|
|
%ifdef x64
|
|
REG_SIZE equ 8
|
|
%else
|
|
REG_SIZE equ 4
|
|
%endif
|
|
|
|
%define x0 EAX
|
|
%define x1 ECX
|
|
%define x2 EDX
|
|
%define x3 EBX
|
|
%define x4 ESP
|
|
%define x5 EBP
|
|
%define x6 ESI
|
|
%define x7 EDI
|
|
|
|
%define x0_L AL
|
|
%define x1_L CL
|
|
%define x2_L DL
|
|
%define x3_L BL
|
|
|
|
%define x0_H AH
|
|
%define x1_H CH
|
|
%define x2_H DH
|
|
%define x3_H BH
|
|
|
|
%ifdef x64
|
|
%define r0 RAX
|
|
%define r1 RCX
|
|
%define r2 RDX
|
|
%define r3 RBX
|
|
%define r4 RSP
|
|
%define r5 RBP
|
|
%define r6 RSI
|
|
%define r7 RDI
|
|
%else
|
|
%define r0 x0
|
|
%define r1 x1
|
|
%define r2 x2
|
|
%define r3 x3
|
|
%define r4 x4
|
|
%define r5 x5
|
|
%define r6 x6
|
|
%define r7 x7
|
|
%endif
|
|
|
|
%macro MY_PUSH_4_REGS 0
|
|
push r3
|
|
push r5
|
|
%ifdef x64
|
|
%ifdef CYGWIN64
|
|
push r6
|
|
push r7
|
|
%endif
|
|
%else
|
|
push r6
|
|
push r7
|
|
%endif
|
|
%endmacro
|
|
|
|
%macro MY_POP_4_REGS 0
|
|
%ifdef x64
|
|
%ifdef CYGWIN64
|
|
pop r7
|
|
pop r6
|
|
%endif
|
|
%else
|
|
pop r7
|
|
pop r6
|
|
%endif
|
|
pop r5
|
|
pop r3
|
|
%endmacro
|