汇编语言学习 操作数指示符

以下为读书笔记,摘抄自《深入理解计算机系统》

 

汇编程序为程序员提供了更多处理器状态:

  • 程序计数器:将要执行的下一条指令在存储器中的地址 %eip
  • 整数寄存器堆:8个32位的寄存器
  • 条件码寄存器:记录控制流状态(if,while)等
  • 浮点寄存器堆: 8个32位寄存器
访问信息:

整数寄存器堆的八个寄存器:%eax, %ecx, %edx, %ebx, %esi, %edi, %esp 栈指针, %ebp 帧指针

汇编语言学习 操作数指示符_第1张图片
 
操作数指示符:立即数、寄存器、存储器
  类型     格式                      操作数值                        名称                  
  立即数    $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]                

  伸缩化的变址寻址       

你可能感兴趣的:(C++,编译原理,读书笔记)