2014-01-05 141 views

回答

1

看一看jaljr$fp$sp和MIPS調用約定(S)
是的,你就無法擺脫的標籤東西

0

的問題是,你不能以你用高級語言思考的方式思考彙編。這是一個完全不同的世界。

你沒有方法,你沒有循環。有條件的分支和跳躍是你所有的。忘記語言施加的執行控制 - 你已經回到了GOTO爲王的土地。所以就像@deviantfan說的那樣,你將不得不習慣jal(跳轉和「鏈接」,也就是保存電腦$ra)和jr $ra

而你沒有陣列。你甚至沒有變數,而不像HLL那樣。範圍的想法是完全陌生的。你所擁有的全部是寄存器,屬於誰把東西放進去。和內存位置,可以由任何人寫。如果你想考慮像變量那樣的東西,記住它們都是全局變量。這就是MIPS調用約定@deviantfan提到的地方。如果你寫了一個函數(也就是說,用jal調用的一段代碼以jr $ra結尾,那麼要遵循這些約定,所以你不要把垃圾放到你的調用者的寄存器,並且完全取決於你確定你正在寫入的數據在你的意思之內,並且不會覆蓋別人正在使用的內存位置,因爲沒有「字符串」的概念,或者 - 只是一堆可能包含從ASCII任何形式的數據,以浮點數字字節

這就是電腦如何真正工作其他一切的HLL給你只是抽象(又名糖衣)進行。編程更簡單,更可靠。