汇编基础:寄存器与简单算术运算
1. 汇编程序基本指令回顾
在之前的学习中,我们接触到了一些基本的汇编指令,如 movq
和 syscall
。以退出程序的示例代码为例:
movq $60, %rax
movq $3, %rdi
syscall
-
movq
指令用于在64位数据块(8字节)间移动数据。它有两个操作数,第一个是“源”,第二个是“目标”,用逗号分隔。例如movq $3, %rdi
,可以理解为“将数字3移动到%rdi寄存器”。 -
syscall
指令用于执行系统调用,它会让Linux内核接管,执行特定的系统任务。在上述代码中,%rax
存储系统调用号(60表示退出系统调用),%rdi
存储程序的退出状态码。
2. 指令操作数与执行顺序
- 操作数类型 :
movq
指令的源操作数可以是寄存器、内存地址或具体数字。使用$
符号表示使用的是一个具体数字。目标操作数通常是寄存器。 - 执行顺序 :程序中的指令按顺序依次执行,从
_start
标记的位置开始。现代处理器可能会进行指令重排或同时执行多条指令,