【发布时间】:2018-06-06 21:01:04
【问题描述】:
在给定指令地址的情况下,是否可以使用 MIPS 中的 SW 和 LW 指令访问代码段内存?
例如:
0x1000: ADDI $s1, $zero, 0x1000
0x1004: LW $s2, 4($s1)
代码会加载到$s2 中吗? 0x0000(假设数据段为空)或0x1004处指令的二进制表示?
编辑:
AFAIK,由于指令内存和数据内存的分离,MIPS 处理器中的流水线是可能的 - 如果我错了,请纠正我。
编辑 2:
我找到了question,其答案意味着可以使用LW 和SW 访问和修改指令。因此答案是$s2 将在 0x1004 处包含指令的二进制表示。
【问题讨论】:
-
MIPS 有设置吗?
-
@old_timer: segments of the executable file (data / text / bss),不是分段内存模型。但是,是的,OP 似乎对程序段与 x86 样式的分段内存(MIPS 没有)感到困惑。
-
@old_timer 是的,根据谷歌的第一个结果:):cs.umd.edu/class/sum2003/cmsc311/Notes/Mips/dataseg.html
-
您的意思是写
ADDI $s1, $zero, 0x1000?或者只是LW $s2, 0x1004($zero)?否则你的加载地址取决于$s1的初始值。