以下为读书笔记,摘抄自《深入理解计算机系统》
汇编程序为程序员提供了更多处理器状态:
- 程序计数器:将要执行的下一条指令在存储器中的地址 %eip
- 整数寄存器堆:8个32位的寄存器
- 条件码寄存器:记录控制流状态(if,while)等
- 浮点寄存器堆: 8个32位寄存器
访问信息:
整数寄存器堆的八个寄存器:%eax, %ecx, %edx, %ebx, %esi, %edi, %esp 栈指针, %ebp 帧指针
操作数指示符:立即数、寄存器、存储器
类型 | 格式 | 操作数值 | 名称 |
立即数 | $Imm | Imm = 直接的常数数值 | 立即数寻址 |
寄存器 | E_a | R[E_a] = 寄存器E_a的数据 | 寄存器寻址 |
寄存器 | Imm | M[Imm] = VSS[Imm] 虚拟地址Imm处的数据 | 绝对寻址 |
寄存器 | (E_a) | M[R[E_a]] = VSS[R[E_a]] | 间接寻址 |
寄存器 | Imm(E_b) | M[Imm+R[E_b]] = VSS[Imm+R[E_b]] | (基址+偏移量) 寻址 |
寄存器 | (E_b,E_i) | M[R[E_b]+R[E_i]] | 变址 |
寄存器 | Imm(E_b,E_i) | M[Imm+R[E_b]+R[E_i]] | 寻址 |
寄存器 | (,E_i,s) | M[R[E_i]*s] | 伸缩化的变址寻址 |
寄存器 | Imm(,E_i,s) | M[Imm+R[E_i]*s] | 伸缩化的变址寻址 |
寄存器 | (E_b,E_i,s) | M[R[E_b]+R[E_i]*s] | 伸缩化的变址寻址 |
寄存器 | Imm(E_b,E_i,s) | M[Imm+R[E_b]+R[E_i]*s] | 伸缩化的变址寻址 |