| %imacro export 1+.nolist |
| .export %1 |
| %endmacro |
| |
| ; Raw exception handling operations |
| %imacro proc_frame 1+.nolist |
| %1: |
| .proc_frame %1 |
| %endmacro |
| |
| %imacro endproc_frame 0.nolist |
| .endproc_frame |
| %endmacro |
| |
| ; Complex (macro) exception handling operations |
| ; Mimics many macros provided by MASM's macamd64.inc |
| %imacro push_reg 1 |
| pushq %1 |
| .pushreg %1 |
| %endmacro |
| |
| %imacro rex_push_reg 1 |
| .byte 0x48 |
| pushq %1 |
| .pushreg %1 |
| %endmacro |
| |
| %imacro push_eflags 0 |
| pushfq |
| .allocstack 8 |
| %endmacro |
| |
| %imacro rex_push_eflags 0 |
| .byte 0x48 |
| pushfq |
| .allocstack 8 |
| %endmacro |
| |
| %imacro alloc_stack 1 |
| subq $%1, %rsp |
| .allocstack %1 |
| %endmacro |
| |
| %imacro save_reg 2 |
| movq %1, %2(%rsp) |
| .savereg %1 %2 |
| %endmacro |
| |
| %imacro save_xmm128 2 |
| movdqa %1, %2(%rsp) |
| .savexmm128 %1, %2 |
| %endmacro |
| |
| %imacro push_frame 0-1.nolist |
| .pushframe %1 |
| %endmacro |
| |
| %imacro set_frame 1-2 |
| %if %0==1 |
| movq %rsp, %1 |
| %else |
| leaq %2(%rsp), %1 |
| %endif |
| .setframe %1, %2 |
| %endmacro |
| |
| %imacro end_prolog 0.nolist |
| .endprolog |
| %endmacro |
| |
| %imacro end_prologue 0.nolist |
| .endprolog |
| %endmacro |