雖然通過MIPS代碼,我有些困惑。代碼如下所示MIPS代碼混淆
.data
key: .ascii "key: " # "key: \n"
char: .asciiz " \n"
.text
.globl main
main:
jal getchar
la $a0, char # $a0 contains address of char variable (" \n")
sb $v0, ($a0) # replace " " in char with v0, which is read_character (X)
la $a0, key # now a0 will contain, address of "key: " "X\n"
我不明白的是,如何加載地址指令的工作原理。首先a0包含char變量的地址。在下一行中,我們將在該位置存儲v0的值。沒有與($a0
)的偏移量,是否假定爲0,如0($a0
)?爲什麼只有空白空間替換爲v0,爲什麼不替換「\ n」呢?或者也可能是空的空間和\ n字符被v0代替。
其次當我們在a0中加載密鑰的地址時,以前的地址應該被覆蓋。 a0應該只包含密鑰的地址,但從註釋看來,這兩個字符串是串聯的。這是怎麼發生的。