2016-10-31 135 views
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 

我無法理解爲什麼我收到錯誤。

+0

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html表示BEQ需要兩個寄存器操作數和一個標籤,而不是立即數。 –

+0

@PeterCordes使用immediate作爲第二個參數是_valid_,因爲'beq'是一個僞操作[如果彙編器支持它,哪個'mars'確實]。它產生以下「真實」指令序列:'addi $ at,$ zero,1' /'beq $ at,$ t0,1dimensional'。 –

+0

啊,好吧,那麼不要重複http://stackoverflow.com/questions/16760255/why-we-cant-compare-bne-beq-a-register-with-an-immediate-assembly-mips畢竟,如果你使用一個彙編程序,它會在將beq擴展爲僞操作的同時破壞$ r1。這對我來說似乎很奇怪,但我猜想當你有31個體繫結構寄存器時,可以浪費其中的一些,就像操作系統允許異步闖入的那兩個一樣。 –

回答

2

您遺漏了錯誤消息的關鍵部分,即什麼無效的語言元素是。
彙編程序抱怨的是標籤1dimensional。彙編程序通常只允許字母和下劃線(也可能只有一個.)作爲標籤的第一個字符。因此,將該標籤的名稱改爲符合該要求的內容,例如onedimensional