MIPS指令集 寻址的方式

目录

https://blog.csdn.net/weixin_45792450/article/details/109314693


寻址方式概述

一般来讲,程序由数据指令构成,指令指导操作,数据提供操作对象,指令和数据在运行时都是存在内存中的,对它们的寻址需要特定的方法。

寻址方式分为指令寻址数据寻址。对指令地址的寻找称为指令寻址,对数据地址的寻找称为数据寻找。

指令寻址

顺序寻找:按指令存储顺序自动寻址,如程序计数器PC寻址。内存一般按字节(Byte)编址,一条指令32位,4个字节,那么下一条指令的首地址是上一条指令首地址加上4,程序计数器PC由此直接算出下一条指令的地址。

寄存器寻址:指令地址在寄存器中,访问寄存器获得指令地址。MIPS寄存器也是32位的,可以直接存储32位的指令地址,2^32字节为4GB,相对MIPS处理器的应用领域来说已经够了

PC相对寻址:给出一个立即数,和PC中地址相加得到指令地址。比如要找当前指令的向后偏移两个指令长度的指令,只需要当前指令地址加上8(=2*4)即可得到。这种方式的特点是以PC中存储的指令地址为基准,进行一个常数的偏移

伪直接寻址:参考MIPS指令中的跳转指令,26位操作数左移2位,与PC高4位组成新的32位地址。对于跳转指令,由于32位里面,高位的6位已经被指令操作码占据,那么关于操作数据只能放低位的26位,显然不够32位地址,只能让这26位先左移两位变28位,然后将PC中的高4位充当其高4位,以此扩充成32位指令地址

后三种称为跳跃寻址,与顺序寻址相对。

数据寻址

寄存器寻址:数据存在寄存器当中,访问寄存器即可拿到数据。MIPS寄存器的32位,就可以存储指令地址,又可以存储数据地址,而通用寄存器就32个,均按自然数从0到31排序,只需5个二进制数即可表示所有寄存器,也就是在指令中只需要5位即可指出操作数

立即数寻址:数据就就是当前指令的立即数,直接使用即可。有立即数的指令格式是I型指令,立即数占16位,相对普通的操作,16位立即数已经够用了

基址寻址:又叫偏移寻址,通过立即数与基址寄存器的值相加得到数据的地址,然后通过数据传输指令进行数据操作。一般基址寄存器的地址指向内存的某个有固定功能的分区,程序的数据和指令以该地址为起始,进行存取,这种做法可以方便调度内存分配。

其他

当然还有更多的指令寻址和数据寻找方式,不过MIPS处理器中常见的寻找方式即上述几种。其他架构下的处理器还有各种各样的寻找方式,以适应各种不同的应用场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦星辰.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值