【发布时间】:2017-04-22 23:26:59
【问题描述】:
根据我的课堂笔记,在 MIPS 中,跳转指令的编码是 6 位的操作码和 26 位的目标地址。但是地址是 32 位的,那么地址的哪一部分被遗漏了呢?考虑一条 j 指令(操作码 2 -> 000010 6 位)和目标地址 0x00400024 -> 0000 0000 0100 0000 0000 0000 0010 0100。最终的编码应该是0x08100009,实在不明白目标地址是怎么编码的
【问题讨论】:
-
由于指令对齐到 4 个字节,所以省略了两个低位。鉴于
0x400024 >> 2 = 0x100009这将是编码。任何指令集参考都应该告诉你这一点。 -
非常感谢!而我没有提到的参考表。它只说地址使用了 26 位。
标签: assembly mips memory-address machine-code