0
我試圖執行一個非常簡單的程序,但我不斷收到錯誤:Invalid language element
彙編語言無效元素MIPS
lw $t0, 0($a0) #load integer from $a0->$t0
beq $t0, 1, 1dimensional #branch if $t0=1
1dimensional:
do something
我無法理解爲什麼我收到錯誤。
我試圖執行一個非常簡單的程序,但我不斷收到錯誤:Invalid language element
彙編語言無效元素MIPS
lw $t0, 0($a0) #load integer from $a0->$t0
beq $t0, 1, 1dimensional #branch if $t0=1
1dimensional:
do something
我無法理解爲什麼我收到錯誤。
您遺漏了錯誤消息的關鍵部分,即什麼無效的語言元素是。
彙編程序抱怨的是標籤1dimensional
。彙編程序通常只允許字母和下劃線(也可能只有一個.
)作爲標籤的第一個字符。因此,將該標籤的名稱改爲符合該要求的內容,例如onedimensional
。
http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html表示BEQ需要兩個寄存器操作數和一個標籤,而不是立即數。 –
@PeterCordes使用immediate作爲第二個參數是_valid_,因爲'beq'是一個僞操作[如果彙編器支持它,哪個'mars'確實]。它產生以下「真實」指令序列:'addi $ at,$ zero,1' /'beq $ at,$ t0,1dimensional'。 –
啊,好吧,那麼不要重複http://stackoverflow.com/questions/16760255/why-we-cant-compare-bne-beq-a-register-with-an-immediate-assembly-mips畢竟,如果你使用一個彙編程序,它會在將beq擴展爲僞操作的同時破壞$ r1。這對我來說似乎很奇怪,但我猜想當你有31個體繫結構寄存器時,可以浪費其中的一些,就像操作系統允許異步闖入的那兩個一樣。 –