MIPS中有关于分支指令及跳转寻址
2024-08-27 04:14:43
分支指令
分支指令包含该指令,和两个操作数,以及跳转的分支地址,该地址是相对于下一条指令的相对地址
分支指令占6位 操作数1占5位 操作数2占5位 分支指令16位
例如
bne $s0 , $s1,EXIT
执行bne分支指令,比较$s0和$s1两个操作数中的数据,如果不相等则跳转到EXIT指定的地址,
如何到达EXit的地址?
这就要利用分支指令那16位二进制数了
16位二进制可以表示的范围为-2^15~2^15也就是-128~127,通过下一指令的地址加上该分支指令值就能得到目标地址
如何进行地址的加减就要用到二进制的补码来进行运算
16位中负数最小值的补码演变:0X0000FFFF(原码)因为是负数所以在FFFF前加一得到OX0001FFFF,再进行按位取反得到OXFFFE0000(补码)
加上下一条指令的地址就是目标地址了
16位中正数的补码就是原码最大值为Ox00007FFFF
跳转指令
跳转指令则只有该指令和跳转的目标地址组成
跳转指令6位 相对跳转地址16位
因为地址都是4位一组所以将该26位地址进行左移2位表示28位的地址
其没有正负之分因此相对简单
OX6位指令码+(11)多的2位二进制码FFFFFF(24位)
左移之后变成
保留6位指令当中的最高4位,之后的目标地址等于原来的26位加上补上的2位得到
OX0FFFFFFC(最大移动地址)
最新文章
- 装饰者模式 Decoration
- 用alarmmanager 多次发送PendingIntent
- 【WPF系列】基础学习-XAML
- Python之路,Day2 - Python基础2
- Linux phpwind论坛的安装
- POJ 4044 Score Sequence
- 纯css切换左侧菜单
- Source not found for AeceManager$$FastClassByCGLIB$$15dcd49c.invoke(int, Object, Object[]) line: not available 问题解决
- Unity 小笔记
- SSH框架组建时碰到的一些问题
- 事件绑定on与hover事件
- QTP自动化测试-点滴-步骤
- 二、JavaScript基础(1)
- windows下cmd无法使用telnet命令解决方法 (原)
- 【转】使用VisualStudio完成自动化C++代码生成和编译工作(GacUI)
- kubernetes核心组件kube-proxy 学习总结
- nodejs 文件拷贝
- [转] 理解 JavaScript 中的 Array.prototype.slice.apply(arguments)
- Lucene解析 - 基本概念
- 从exp入手分析漏洞