我现在正在编写的程序有问题,这正是程序。
.data
BYTE1: .byte 0xAD
BYTE2: .byte 0xDE
WORD1: .word 0
WORD2: .word 0
WORD3: .word 0
WORD4: .word 0
WORD5: .word 0
MYNAME: .asciiz "SamW"
.text
.globl main
main:
#WORD1
lui $t0, 0xCAFE
srl $t0, $t0, 16
la $t1, WORD1
sw $t0, 0($t1)
#WORD2
lui $t0, 0xBEAD
srl $t0, $t0, 16
la $t1, WORD2
sw $t0, 0($t1)
#WORD3
lui $t0, 0xDEAF
srl $t0, $t0, 16
la $t1, WORD3
sw $t0, 0($t1)
#WORD4
lui $t0, 0xDEED
srl $t0, $t0, 16
la $t1, WORD4
sw $t0, 0($t1)
#MYNAME
lw $t0, 8($t1)
la $t1, WORD5
sw $t0, 0($t1)
#LOAD_B1
la $t0, BYTE1
lbu $s0, 0($t0)
#LOAD_B2
addi, $t0, $t0, 1
lbu $s1, 0($t0)
#LOAD_W1
la $t0, WORD1
lw $s2, 0($t0)
addi $t0, $t0, 4
#LOAD_W2
lw $s3, 0($t0)
发生的问题是在最后几行代码中,我指示 lw 从 WORD1 和 WORD2 中提取信息并将其存储在保存寄存器中。出于某种原因,当我一次运行该代码时没有任何反应,但是当我清除所有寄存器并再次重新初始化程序时,在前 2 条指令中,这些指令被正确执行。任何见解将不胜感激。
注意突出显示的指令和寄存器 19 中打印的内容。再次在最初运行代码时,寄存器 19 中没有发生任何事情,然后当我重新初始化它时,它在指令 3 中弹出。
这是内存库的图片: