MIPS:将 BEQ 计算为十六进制机器代码

2024-01-10

我有一个作业,必须将 MIPS 指令转换为其十六进制机器代码。我知道如何转换 add、addi、lw 等指令,但是当它转换为 beq 之类的指令时,我感到困惑。我如何将这个 beq 转换为十六进制?

0x00400108   beq $t3, $t5, NEXT
0x0040010C   j END

其中 NEXT 的地址是

0x0040011C

?

我尝试过的:

beq 操作码 = 4

$t3 = 寄存器 11

$t5 = 寄存器 13

下一个 = 0x0040011C - 0x0040010C = 10(十六进制)= 16(十进制)

4 11 13 16 (decimal)
000100 01011 01101 0000 0000 0000 1000 (convert to binary)
0001 0001 0110 1101 0000 0000 0000 1000 (group into fours)
1 1 6 D 0 0 0 8 (hexadecimal)

但这是错误的...


经过很长一段时间的愚蠢,我找到了正确的答案。

总结代码:

beq $t3, $t5, NEXT
[instruction 1]
[instruction 2]
[instruction 3]
[instruction 4]
NEXT: [instruction 5]

正如迈克尔所说,偏移量是分支指令后面的指令的字数。指令 1 是 beq 之后的下一条指令,因此从那里开始计数直到 NEXT。从指令 1 到 NEXT 有 4 条指令,因此 beq 的格式现在为:

op     |  rs   |  rd   |  16-bit constant or address
000100 | 01011 | 01101 | 0000 0000 0001 0000

其中 rs 是 $t3,rd 是 $t5。

重新组合并转换为十六进制:

0001 | 0001 | 0110 | 1101 | 0000 0000 0001 0000
  1  |  1   |  6   |  D   |   0    0   1     0

所以十六进制表示为116D0010。干杯。 编辑:指令是字,4条指令* 4字节= 16字节

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MIPS:将 BEQ 计算为十六进制机器代码 的相关文章

  • mips 中的排序数组(汇编)

    我正在使用 mips 进行课堂学习集会 我正在对数字数组进行排序 我认为我的方法工作正常 但有点麻烦 我不知道如何检查我是否完全排序 我使用了一种非常基本的排序方法 但这就是迄今为止我们所学到的全部内容 另外 我不知道如何输出数字来检查它是
  • MIPS32 路由器:内核模块未调用 module_init

    我正在开发一个要在路由器上运行的内核模块 路由器型号为 Netgear 的 DGN2200v2 它在 MIPS 上运行 Linux 2 6 30 我的问题是 当我加载模块时 似乎我的module init没有接到电话 我试图通过修改我的mo
  • 跳转目标与指令pc 0x400014高4位不同

    我正在处理我的 MIPS 分配 但收到此错误 跳转目标与指令 pc 0x400014 的高位 4 位不同 我想要一些帮助 您正尝试跳转到内存中当前 256MByte 区域之外的地址 看here 如果您需要帮助识别代码中的问题 您需要发布一些
  • MIPS 组件,lui 0x1001

    我有一个作业 其中我必须解释有关以下 MIPS 汇编代码的一些内容 data x word 4711 y word 10 z word 0x0A91 e word 0 text globl main main lw 2 x lw 3 y l
  • MIPS 汇编中的奇怪跳跃

    我可能在这里遗漏了一些非常明显的东西 但我已经一遍又一遍地讨论这个问题 而且我肯定被困住了 在下面的代码中 8仅当以下情况时才会递增 2 0 现在我仔细检查了两次和三次beq指令有效 例如 如果我将 lop 更改为 end2 它就会转到那里
  • 使用 MIPS 汇编中的逻辑移位乘以 2 的幂

    有人可以指导我如何在 MIPS 汇编中使用移位来制作乘法代码吗 我不明白数字 2 n 如何帮助我使用奇数被乘数进行乘法 我目前有这段代码 我正在尝试制作一个计算器 text li v0 4 la a0 ask 1 syscall li v0
  • MIPS $gp 寄存器

    使用有危险吗 gp注册来存储一个值 我想我的问题是真正的功能是什么 gp它是否以某种方式在幕后被调用 以便如果我使用它 事情可能会变得非常非常错误 好吧 gp 寄存器指向全局区域 习俗 http en wikipedia org wiki
  • 为什么我的 MIPS 基础转换器在当前值之后打印出前一个循环的值?

    我对 MIPS 很陌生 这让我完全困惑 我编写了一个程序来转换基数 第一次运行时效果很好 但是当它循环时 它会显示先前循环迭代中其他寄存器的值 输出如下 我已经尝试了我能想到的一切 但我没有想法 Enter a decimal number
  • 加载词和移动之间的区别?

    有什么区别 ldw r8 0 r4 and mov r8 r4 Load word 说 从内存复制 但是当 load word 从 r4 复制时 它是从寄存器复制而不是从内存复制 对吧 The lw instruction I assume
  • MIPS 伪指令、替换

    经过研究后 我发现这只是获得相同结果的方法的替代 如果我错了 请纠正我 example move s0 t1 可以替换为 add s0 zero t1 问题 怎样才能更换lw la sw bne 是的move指令可以并且被替换为add操作说
  • 如何在 MIPS 中正确使用 mod 运算符?

    在 MIPS 中 我对如何让 mod 工作感到困惑 下面是我迄今为止提出的代码 除了 mod 之外 我可能还有更多错误 但我觉得这些错误是 mod 误解的结果 我想做的就是在这里获取工作代码 python i 1 k 0 while i l
  • 零寄存器如何提高性能?

    在 MIPS ISA 中 有一个零寄存器 r0 始终给出零值 这允许处理器 任何产生要被丢弃的结果的指令都可以将其目标定向到该寄存器 成为一个来源0 据说在这source https web archive org web 20170328
  • 为 Mips 架构编译 C

    我已经看到了几种方法来做到这一点 到目前为止我还没有尝试过几种 但我想为了方便起见隔离这个方法 应该有一种方法可以通过 VIA gcc 来做到这一点 我更喜欢这个 我只是不断碰壁 我正在使用 debian7 并且可以使用其他任何风格 我暂时
  • MIPS——这重要吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的问题 了解 MIPS 编程语言有用吗 我是一名计算机科学学生 正在上一门以 MIPS 为重点的汇编课程 我很擅长使用高级语言进行编写 但 M
  • 在MIPS中,为什么跳转指​​令可以将程序计数器设置为28位目标地址

    在 MIPS 中 32 位跳转指令由 6 位操作码和 26 位我们要设置程序计数器的目标 目标 地址组成 然而 可以将程序计数器设置为 28 位目标地址 如果跳转指令只能容纳 26 位 这怎么可能呢 MIPS 上的指令始终是 4 字节对齐的
  • 结构中的位是否得到保证

    我有一个与结构位字段相关的问题 请参阅下文 因为我对应该使用哪些关键字来最好地描述我的问题有点无能为力 背景 我正在为 MIPS R3000A 汇编指令编写一个反汇编程序 该指令在 2000 年初用于 Playstation 程序 问题 我
  • MIPS 与火星模拟。 - 如何自动从键盘输入读取值(即 - 无需按 Enter 键即可获取值)

    为了完成此任务 是否有特定的系统调用或我缺少的东西 您必须使用系统调用 12 来读取字符 看MARS 系统调用表 http courses missouristate edu KenVollmar MARS Help SyscallHelp
  • 如何关闭MIPS-GCC自动指令重排序?

    继这个问题之后 使用跳转 和链接 指令的奇怪 MIPS 汇编器行为 https stackoverflow com questions 3807480 weird mips assembler behavior with jump and
  • I 类型指令的 MIPS 周期数 (addi)

    So on https en wikipedia org wiki Cycles per instruction https en wikipedia org wiki Cycles per instruction它说 对于多周期MIPS
  • 裸机交叉编译器输入

    裸机交叉编译器的输入限制是什么 比如它不编译带有指针或 malloc 的程序 或者任何需要比底层硬件更多的东西 以及如何才能找到这些限制 我还想问 我为目标 mips 构建了一个交叉编译器 我需要使用这个交叉编译器创建一个 mips 可执行

随机推荐