• 指令的寻址方式


    寻址方式是指寻找指令或操作数有效地址的方式,寻址方式分为指令寻址和数据寻址两大类。

    指令中的地址码字段并不代表操作数的真实地址,这种地址成为形式地址A,由形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址,这种地址称为有效地址EA

    其中(A)代表地址为A的数值。

    指令寻址和数据寻址:

      1.指令寻址:

        1)顺序寻址:通过程序计数器PC加一(一个指令字长),自动形成下一条指令的地址。

        2)跳跃寻址:通过转移类命令实现,下一条指令的地址不由PC自动给出,而是由当前指令给出指令地址的计算方式,跳跃的结果是当前的指令修改PC的值,所以本质上下一条指令仍通过PC给出

      2.数据寻址:

        数据寻址的方式较多,为区分各个方式,通常在指令字中设置一个字段,用指明属于那种寻址方式。

        

    常见的数据寻址方式:

      1.隐含寻址:

        这种类型的指令不指明操作数的地址,而在指令中隐含操作数的地址

        优点:可以缩短指令字长,缺点:需要增加存储操作数或隐含地址的硬件。

        

      2.立即寻址:

        地址字段给出的不是操作数的地址,而是操作数本身,又称立即数,采用补码表示。

        优点:指令在执行阶段不访问主存,执行时间最短。缺点:A的位数限制了立即数的范围

        

      3.直接寻址:

        指令字的形式地址A是操作数的真实地址EA,及EA=A

        优点:简单,在执行阶段只访问一次主存。缺点:A的位数决定了操作数的寻址范围,操作数的地址不易修改

        

      4.间接寻址:

        指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在存储单元的地址,即是操作数地址的地址,即EA=(A)

        优点:可以扩大寻址范围。缺点:在指令的执行阶段要访问多次主存

         

      5.寄存器寻址:

        寄存器寻址是指指令字中直接给出操作数所在的寄存器编号,即EA=R,其操作数由R所指的寄存器中:

        优点:指令在执行阶段不用访问主存,由于寄存器数量少,对应的地址码长度少,执行速度快。

        缺点:价格昂贵,寄存器的数量有限。

        

      6.寄存器间接寻址:

        寄存器R中给出的不是操作数,而是操作数所在主存单元的地址,即EA=(R)

        优点:与一般的间接寻址相比速度更快。缺点:指令的执行阶段需要访问主存。

        

      7.相对寻址:

        相对寻址是把PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(PC)+  A

        相对寻址的操作数地址不是固定的,它随PC值的变化而变化,且指令地址之间总是相差一个固定值,因此便于程序的浮动。

        相对寻址被广泛的用于转移指令。

        

      8.基址寻址:

        基址寻址是CPU中的基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成的有效地址,即EA=(BR)+  A

        基址寄存器是面向操作系统的,其内容有操作系统或管理员确定,主要用于解决程序员逻辑空间与存储器物理空间的无关性

        

      9.变址寻址

        变址寻址是指有效地址EA,等于指令字中的形式地址A与变址寄存器IX的内容之和,即EA=(IX)+  A。IX为变址寄存器(专用)

        变址寄存器是面向用户的,在程序的执行过程中,变址寄存器的内容可有用户改变(作为偏移量),形式地址A不变,作为基地址。

        

    变址寻址与基址寻址:

      基址寻址面向系统,主要用于为多道程序或数据分配存储空间,因此基址寄存器的内容通常由操作系统或管理程序确定,在程序的执行过程中其值不变,而指令字中的A是可变的。

      变址寻址立足于用户,主要用于处理数组问题,在变址寻址中,变址寄存器的内容由用户确定,在程序执行过程中其值可以改变,而指令字中的A是不可变的。

    九大数据寻址方式比较:  

       

  • 相关阅读:
    BZOJ 1013--[JSOI2008]球形空间产生器sphere(高斯消元)
    BZOJ 1012--[JSOI2008]最大数maxnumber(二分&单调栈)
    BZOJ 3357--[Usaco2004]等差数列(STL&DP)
    BZOJ 1011--[HNOI2008]遥远的行星(乱搞)
    BZOJ 1010--[HNOI2008]玩具装箱toy(斜率优化dp)
    BZOJ 5334--[Tjoi2018]数学计算(线段树)
    BZOJ 5395--[Ynoi2016]谁的梦(STL&容斥)
    BZOJ 1008--[HNOI2008]越狱(容斥&快速幂)
    一个典型的装饰器
    Nginx 配置文件详解
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/16163794.html
Copyright © 2020-2023  润新知