asm x86 mov and lea

2026-04-18

mov

# prepare rax rbx
	movq	$1, %rax
	movq	$2, %rbx

# mov
	movq	%rax, %rbx      # copy content in rax to rbx
	movq	(%rax), %rbx    # copy content in memory whose address is recorded in rax to rbx
	movq	%rax, (%rbx)    # copy content in rbx to memory whose address is recorded in rbx
#	movq	(%rax), (%rbx)  # not allowed: number of operand in memory location at most to one

# leaq
	leaq	(%rax), %rbx    # copy memory address of a memory whose address is recorded in rax To rbx
	leaq	8(%rsp), %rbp   # copy memory address of a memory whose address is value recorded in rax plus 8 To rbx

直接拷贝和解引用

mov %rsp, %rbp   #改寄存器的内容
mov %rsp, (%rbp) # de-reference 改寄存器指向的内存

括号等同于 C 中 *

leaq

leaq: Load Effective Address Quadwards

将内存偏移拷贝

lea 0x8(%rsp), %rbp

等同于

mov %rsp, %rbp
add $0x8, %rbp

括号在 mov 和 lea 中含义不同

lea (%rsp), %rbp

等同于

mov %rsp, %rbp
avatar
除非注明,本博客所有文章皆为原创。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。