Macos汇编语言

delims 于 2020-08-11 发布

汇编器指令(Directive)

.equ定义字面量

.equ maxCount, 0x114514

之后就可用 $maxCount 代替 0x114514 如: movq $maxCount, %rax

对于push而言,如果我们一下子准备把许多值压入栈内,那么可以先用sub指令减小rsp, 再用mov移动。比如说:

# method 1
pushq   $0x114514
pushq   $0x1919
pushq   $0x810

# method 2
subq    $24, %rsp
movq    $0x114514, 16(%rsp)
movq    $0x1919, 8(%rsp)
movq    $0x810, (%rsp)
leaq    -8(%rbp), %rax

全局变量

.data
    .quad   0x114514
# dataTest.s    
    .data
a:  .quad   0x114514

    .text
    .globl  _main
_main:
    movq    a(%rip), %rax
    retq  

call : jump到参数指定地址,并将下一条指令地址压栈。 ret : jump到栈顶地址,并弹出栈顶。