了解Hello World的lea macOS x86-64

时间:2019-06-27 00:26:25

标签: macos assembly x86-64

有人可以向我解释leaq str(%rip), %rsi的作用,为什么没有简单的mov操作将字符串的值移动到寄存器中?这是macOS x86-64的hello world脚本。

我知道这是通过字符串地址+ rip寄存器的地址来设置rsi寄存器。但是为什么要从rip寄存器的地址偏移呢?

.section __DATA,__data
str:
  .ascii "Hello world!\n"
  len = . - str

.section __TEXT,__text
.globl start
start:

movl $0x2000004, %eax        
movl $1, %edi

leaq str(%rip), %rsi  

movq $len, %rdx                
syscall

movl $0x2000001, %eax 
movl $0, %ebx         
syscall

0 个答案:

没有答案