指令系统中采用不同寻址方式的主要目的是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指令系统中采用不同寻址方式的主要目的是啥?相关的知识,希望对你有一定的参考价值。

指令系统中采用不同寻址方式的目的主要是缩短指令长度,扩大寻址空间,提高编程灵活性。
指令系统是计算机硬件的语言系统,也叫机器语言,
它是软件和硬件的主要界面,从系统结构的角度看,它是系统程序员看到的计算机的主要属性。
指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。
参考技术A 80X86采用程序寻址和数据寻址两种方式,程序的寻址是指程序出现转移和调用时的程序定位方式,这样做当然是为了程序设计的需要;而数据寻址大概有9种吧,原因不明,猜想是为了获取有效数据,例如有效地址和偏移地址,有利于地址的重构和转换... 参考技术B 1、为用户组织和使用数据提供方便。
2、缩短指令长度。比如变址寻址有利于数组操作和程序共用。同时,位移值长度可短于地址长度,因而指令长度可以缩短。
寻址方式是确定本条指令的数据地址以及下一条要执行的指令地址的方法。
扩展资料:
一条指令的执行过程按时间顺序可分为以下几个步骤。
1、CPU发出指令地址。将指令指针寄存器(IP)的内容——指令地址,经地址总线送入存储器的地址寄存器中。
2、从地址寄存器中读取指令。将读出的指令暂存于存储器的数据寄存器中。
3、将指令送往指令寄存器。将指令从数据寄存器中取出,经数据总线送入控制器的指令寄存器中。
4、
指令译码。指令寄存器中的操作码部分送指令译码器,经译码器分析产生相应的操作控制信号,送往各个执行部件。
5、
按指令操作码执行。
6、修改程序计数器的值,形成下一条要取指令的地址。若执行的是非转移指令,即顺序执行,则指令指针寄存器的内容加1,形成下一条要取指令的地址。指令指针寄存器也称为程序计数器。
参考资料来源:百度百科-指令系统

ARM 指令

ARM 寻址方式

所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。

立即寻址:也叫立即数寻址,操作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数。

ADD R0,R0,#0x3f ;R0←R0+0x3f

寄存器寻址:利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。

ADD R0,R1,R2 ;R0←R1+R2

寄存器间接寻址:以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。

ADD R0,R1,[R2] ;R0←R1+[R2]

基址变址寻址:将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。

LDR R0,[R1,#4]  ;R0←[R1+4]
LDR R0,[R1,#4]! ;R0←[R1+4], R1←R1+4
LDR R0,[R1],#4  ;R0←[R1]、R1←R1+4
LDR R0,[R1,R2]  ;R0←[R1+R2]

多寄存器寻址:一条指令可以完成多个寄存器值的传送。这寻址方式可以用一条指令完成传送最多16个通用寄存器的值.

;该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将连续存储单元的值传送到R1~R4。
LDMIA R0,{R1,R2,R3,R4} ;R1←[R0], R2←[R0+4], R3←[R0+8], R4←[R0+12]

相对寻址:以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。

BL NEXT ;跳转到子程序NEXT处执行
……
NEXT
……
MOV PC,LR ;从子程序返回

堆栈是一种数据结构,按先进后出(First InLast Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。
递增堆栈:向高地址方向生长
递减堆栈:向低地址方向生长
满堆栈:堆栈指针指向最后压入堆栈的有效数据项
空堆栈:堆栈指针指向下一个要放入数据的空位置

ARM 指令集

跳转指令
在ARM程序中有两种方法可以实现程序流程的跳转:
(1)使用专门的跳转指令。可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令:

B{条件} addr   ;跳转到add处执行
BL{条件} addr  ;带返回的跳转指令,跳转前会保存PC当前值到寄存器R14中
BLX{条件} addr ;带返回和状态切换的跳转指令,将处理器由ARM状态切换到Thumb状态,同时保存PC当前值到寄存器R14中
BX{条件} addr  ;目标地址处的指令既可以是ARM指令,也可以是Thumb指令。

(2)通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用
MOV LR,PC 等类似指令,可以保存将来的返回地址值。

 

以上是关于指令系统中采用不同寻址方式的主要目的是啥?的主要内容,如果未能解决你的问题,请参考以下文章

指令系统——数据寻址

指令系统——数据寻址

计算机组成原理——指令系统考研题

8086寻址方式

8086指令系统中的寻址方式

Ceph RGW:数据的存储及寻址