如何在 MIPS 中设置指令的内存地址?
How to set the memory adress for an instruction in MIPS?
通常情况下,SPIM 模拟器本身会为程序中的指令分配一个地址。有什么方法可以手动选择存储特定指令的位置吗?
当然,.text
指令有一个可选参数,您可以在其中指定地址:
.text
.globl main
# This code ends up at the default address for the .text section
main:
li $a0,1
jal foo
li $v0,1
syscall
li $v0,10
syscall
.text 0x430000
# This code ends up at address 0x430000
foo:
li $a0,2
jr $ra
当然不能随便选一个地址。它必须对目标环境有效(在我的例子中是 QtSpim)。
另一种可能性是assemble将所有内容都放入默认位置,然后在运行时将部分代码复制到 RAM 中并从那里执行。
通常情况下,SPIM 模拟器本身会为程序中的指令分配一个地址。有什么方法可以手动选择存储特定指令的位置吗?
当然,.text
指令有一个可选参数,您可以在其中指定地址:
.text
.globl main
# This code ends up at the default address for the .text section
main:
li $a0,1
jal foo
li $v0,1
syscall
li $v0,10
syscall
.text 0x430000
# This code ends up at address 0x430000
foo:
li $a0,2
jr $ra
当然不能随便选一个地址。它必须对目标环境有效(在我的例子中是 QtSpim)。
另一种可能性是assemble将所有内容都放入默认位置,然后在运行时将部分代码复制到 RAM 中并从那里执行。