Qin darkstone
指令寻址

指令寻址

指令寻址

  • 一般取指令后PC自动加一

    • 注意加的是一个指令字长

  • 采用不同寻址方式的目的

    • 缩短指令字长
    • 扩大寻址空间
    • 提高编程灵活性
      • 但提高了指令译码的复杂度。
  • 程序控制的实现是靠转移指令实现的

  • 转移类指令实现的跳跃寻址的结果是修改PC值,所以下一条指令仍然是通过PC给出的

  • 使用寄存器寻址可以有效的缩短地址段的位数

    • 因为CPU中寄存器的数量不会太多,用很短的编码就可以指定寄存器。
    • 立即寻址看似可以缩短地址段位数
      • 但是操作数保存在指令中,若地址段位数太小,则操作数表示的范围会很小
  • 可以使用隐地址来简化地址结构

    • 隐地址不给出明显的操作数地址,而在指令中隐含操作数的地址,因此可以简化地址结构,如零地址指令
  • 获取操作数最快的寻址方式

    • 立即寻址最快 指令直接给出操作数
    • 寄存器寻址次之,只需访问一次寄存器
    • 直接寻址再次之,访问一次内存
      • 寄存器间接寻取操作数的速度接近直接寻址
    • 直接寻址最慢,要访问内存两次或以上
  • 进出堆栈对栈顶指针的操作顺序不同

    • 进栈先压入数据后修改指针,说明栈指针是指向栈顶的空单元的
    • 出栈要先修改指针,然后才能弹出数据
  • 在多道程序设计中,除了基址寻址外

    • 各个程序段可能要在内存中浮动,而相对寻址特别有利于程序浮动
  • 转移指令、子程序调用与返回指令用于解决变动程序中指令执行次序的需求

  • 寄存器等硬件中的地址表示都是无符号数

Author:Qin darkstone
Link:https://qindarkstone.github.io/2023/08/18/408/计算机组成原理要点/指令系统/指令寻址/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可