gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:26:40 25 4
gpt4 key购买 nike

我有一项作业,必须将 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 字节

关于MIPS:将 BEQ 计算为十六进制机器代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21802457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com