首页 文章

帮助从十六进制中的MIPS指令中查找地址

提问于
浏览
0

嗨,我被困在我的任务上,这要求我写一个c程序,读取输入文件,如:

Registers
r1 = 0c100009

Instructions
0c100009
3c071001
8ce20011
84e33080
80e48000
ace2ffff
a4e39001
a0e48088
03e00008

并确定指令是保存还是加载,指令访问了多少字节,以及内存中第一个字节的地址 .

我需要帮助了解指令的工作原理 . 我知道我必须将指令翻译成二进制,例如

8ce20011

100011 00111 00010 0000000000010001

是的

lw $t3 17($s7)

但我不知道如何计算地址和访问的字节数 . 我想忽略所有未保存或加载的指令 .

而且,标志延伸是什么意思?

谢谢您的帮助 .

1 回答

  • 0

    你走在正确的轨道上 .

    操作码8ce20011反汇编为“lw v0,17(a3)”或等效“lw $ 2,17($ 7)”

    在你的“lw $ t3,17($ 7)”示例中,您需要知道$ 7的当前值(即$ a3),然后才能计算出它的加载地址 . 提示:看看上一条指令 . “lw”指令加载一个字或4个字节 .

    顺便说一句,具有17的偏移的“lw”在字边界上没有对齐是非法的并且在MIPS中引起陷阱 .

    Sign extension

相关问题