上一回主要讲了寻址方式:指令寻址和数据寻址
指令寻址分为定长指令字结构(分为四地址指令、三地址指令等,操作码的长度固定,指令长度固定,就是后面的地址长度进行变化)和变长指令字结构
同时也可分为定长操作码和可扩展操作码(就是把其中的一种状态表示成可扩展形式)
数据寻址也分为多种形式,用特征码表示,有立即寻址、直接寻址等,不同的方式访问主存的次数也不一样
偏移寻址
偏移寻址:基址寻址、变址寻址、相对寻址
有效地址的产生需要进行加法计算
基址寻址
EA=(BR)+A
优点:
- 可以扩大寻址范围 ,因为A的位数少,BR的位数多,相加的话增加了EA的位数,寻址范围就扩大了,可将主存的每段首地址放到基地址,段内的位移量由指令字中的形式地址指出。
- 用户不必考虑程序存于主存的哪,有利于多道程序的设计,可用于编制浮动程序。可以把D理解为相对位置,BR理解为起始位置,那么程序放在哪由BR决定。
分类:隐式(a)和显式(b),显式由用户指出哪个寄存器用做基址寄存器,存放基地址。


基地址是面向操作系统的,其内容由操作系统或管理程序确定
变址寻址
EA=(IX)+A
优点:可扩大寻址范围;适合编制循环程序:可设定A为数组的首地址,不断改变变址寄存器IX的内容,来实现数组中挨个访问
面向用户,与基址寻址过程相似
为了实现在主存中浮动,可将基址寻址和变址寻址一起使用,EA=A+(BR)+(IX) 所以一般在主存中存储都是混合使用的
相对寻址
EA=(PC)+A
A是相对于当前指令地址的位移量,可正可负
前面两种寻址方式更适合于数据数组的寻址,而相对寻址更适合指令寻址。
优点:便于程序浮动:不同于基址寻址的全局浮动,它是在程序内部浮动,用于程序转移,只需要看PC在哪即可,不用从头数。
堆栈寻址
操作数放在堆栈中,隐含使用堆栈指针(SP)为操作数地址。堆栈式存储器中的一块特殊的存储区,按照先进后出的原则进行存储数据。

主要就是需要掌握入栈和出栈的过程,比如说:两个数相加后的数放回堆栈中的过程。
还有硬堆栈(在一组寄存器中实现)和软堆栈(在主存中实现)之分。
CISC与RISC
主流的CPU指令集类型
CISC:复杂指令集计算机
与其他设计相比,在CISC中进行程序设计要比在其他设计中容易,因为每一项简单或复杂的任务都有一条对应的指令。
80-20规律:在CISC指令集的各种指令中,其使用频率却相差悬殊,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的80%的指令却不经常使用,在程序设计中只占20%。
代表:x86架构,主要用于笔记本、台式机等
RISC:精简指令集计算机
因为80-20规律,所以其实只需要少量指令就可完成大部分工作,复杂的指令可以用那些基本指令组合而成。
特点:一条指令完成一个基本“动作”,多条指令组合完成一个复杂的基本功能。
代表:ARM架构,主要用于手机、平板等

本文详细介绍了计算机科学中的寻址方式,包括指令寻址和数据寻址的不同形式,并探讨了基址寻址、变址寻址及相对寻址的特点和应用。此外,还对比了复杂指令集计算机(CISC)与精简指令集计算机(RISC)的区别。
3790

被折叠的 条评论
为什么被折叠?



