在 Mips 程序集中打印寄存器值
Printing register value in Mips assembly
我有以下代码,我正在尝试打印一个 int 值:
addi $t0, $v0, 0 # add immediate: copy returned value to $t0 by adding 0
li $v0, 1 # syscall 1 (print_int)
sw $t0, 0($a0) # store word: supply argument: recorded return value from $t0
syscall # syscall: print the int
但它在运行时出错,我该如何解决?
$a0 应该包含要打印的值,而不是指向它的指针。将 $v0 分配给 $a0,而不是 addi/sw。我假设 $v0 最初具有要打印的值;从问题中看不出来。
同时,$v0 应该有系统调用号,在本例中为 1。
由于您可能没有将 $a0 初始化为有效的内存地址,因此该程序会尝试写入虚假的内存位置并发生可预见的崩溃。
您可以在 $a0
中移动该值
li $t0,13
li $v0,1
move $a0,$t0
syscall
我有以下代码,我正在尝试打印一个 int 值:
addi $t0, $v0, 0 # add immediate: copy returned value to $t0 by adding 0
li $v0, 1 # syscall 1 (print_int)
sw $t0, 0($a0) # store word: supply argument: recorded return value from $t0
syscall # syscall: print the int
但它在运行时出错,我该如何解决?
$a0 应该包含要打印的值,而不是指向它的指针。将 $v0 分配给 $a0,而不是 addi/sw。我假设 $v0 最初具有要打印的值;从问题中看不出来。
同时,$v0 应该有系统调用号,在本例中为 1。
由于您可能没有将 $a0 初始化为有效的内存地址,因此该程序会尝试写入虚假的内存位置并发生可预见的崩溃。
您可以在 $a0
li $t0,13
li $v0,1
move $a0,$t0
syscall