基址寻址与变址寻址的个人理解

两者都有一个写明在指令里的形式地址A(比如一个16位数),与一个指明寄存器编号的字段R(比如一个2位的编号来区分4个寄存器,这个寄存器可以是隐式的)

区别在于,如果寄存器存的是一个基地址,那就是基址寻址;如果寄存器存的是偏移量,就是变址寻址

变址寻址的使用:A等于数组的开始地址,寄存器里存放偏移量,每次要访问下一个数的时候给寄存器+1(+4/+8都行)。也就是这里由用户来动寄存器,修改里面的偏移量,从而在运行中动态的访问一段地址空间

(以上的内容比较确定,下面的纯属自己的理解)

基址寻址不是很确定,我理解类似相对寻址——汇编的时候地址都是逻辑地址,然后基址寄存器里由操作系统分配一个基地址,作为这段程序运行的地方。然后里面写的逻辑地址就是基址寻址来使用:系统分配的基址寄存器,加上汇编出来的偏移量A,作为一个实际的有效地址。

这个过程中用户是没有去动态的修改任何一个东西的:基址由操作系统给,全程都不变;偏移量是编译源代码的时候给出的,运行中不会改变。这就不同于变址的:基址由程序编译时给出,也是写死的,但是偏移量是在运行中动态的计算得出,由用户自己控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值