Mips - print_string 系统调用在 -bare 模式下不起作用
Mips - print_string syscall doesn't work in -bare mode
此代码是一个运行良好的更大程序的一部分。然后我意识到作业将在 -bare 模式下进行测试。一旦我在 -bare 模式下尝试 运行 它,我的 print_string 系统调用就从工作正常变为不打印任何东西,我不知道为什么。
运行 这没有给我任何错误它只是不打印任何东西
(最后还需要2或$0,$0,$0吗?)
.globl main
.data
v: .space 2
w: .space 2
x: .space 2
y: .space 2
z: .space 2
inputPrompt: .asciiz "Input mathmatical expression: "
.text
main: #main block used to read in all the necessary data
lui $a0, 0x1001
#prompt for expression
addi $v0, [=11=], 4
addi $a0, $a0, 10
syscall
or [=11=],[=11=],[=11=]
jr $ra
or [=11=],[=11=],[=11=]
这是问题所在:
lui $a0, 0x1001
如果您查看 SPIM 中 DATA/STACK 查看器中的地址,您会发现当您处于裸模式时,DATA 部分从 0x10000000 开始,而不是 0x10010000。所以你应该把 lui
改成 lui $a0, 0x1000
.
are the 2 or [=15=],[=15=],[=15=]
necessary
裸模式意味着模拟分支延迟槽。所以你应该用可以在那里安全执行的指令来填充任何分支延迟槽。如果您设法重组代码,那可能是 NOP 或更有意义的指令。例如,如果您有:
ori $a0,[=11=],1
jal foo
您可以将其更改为:
jal foo
ori $a0,[=12=],1 # will be executed in the delay slot
请注意 syscall
没有任何延迟槽。来自 MIPS32™ 程序员架构
第二卷:MIPS32™ 指令集:
Format: SYSCALL
Description:
A system call exception occurs, immediately and unconditionally transferring control to the exception handler
此代码是一个运行良好的更大程序的一部分。然后我意识到作业将在 -bare 模式下进行测试。一旦我在 -bare 模式下尝试 运行 它,我的 print_string 系统调用就从工作正常变为不打印任何东西,我不知道为什么。
运行 这没有给我任何错误它只是不打印任何东西
(最后还需要2或$0,$0,$0吗?)
.globl main
.data
v: .space 2
w: .space 2
x: .space 2
y: .space 2
z: .space 2
inputPrompt: .asciiz "Input mathmatical expression: "
.text
main: #main block used to read in all the necessary data
lui $a0, 0x1001
#prompt for expression
addi $v0, [=11=], 4
addi $a0, $a0, 10
syscall
or [=11=],[=11=],[=11=]
jr $ra
or [=11=],[=11=],[=11=]
这是问题所在:
lui $a0, 0x1001
如果您查看 SPIM 中 DATA/STACK 查看器中的地址,您会发现当您处于裸模式时,DATA 部分从 0x10000000 开始,而不是 0x10010000。所以你应该把 lui
改成 lui $a0, 0x1000
.
are the 2
or [=15=],[=15=],[=15=]
necessary
裸模式意味着模拟分支延迟槽。所以你应该用可以在那里安全执行的指令来填充任何分支延迟槽。如果您设法重组代码,那可能是 NOP 或更有意义的指令。例如,如果您有:
ori $a0,[=11=],1
jal foo
您可以将其更改为:
jal foo
ori $a0,[=12=],1 # will be executed in the delay slot
请注意 syscall
没有任何延迟槽。来自 MIPS32™ 程序员架构
第二卷:MIPS32™ 指令集:
Format:
SYSCALL
Description:
A system call exception occurs, immediately and unconditionally transferring control to the exception handler