遇到的問題: mips 指令中輸入,輸出指令不熟悉,la,li,sys call 等指令之前沒有接觸過,迴圈的編寫中跳出循壞的條件經過多次實驗才成功。判斷條件不成立後不進行下面的操作這一功能仍在研究中。定址方式不熟悉,導致無法正確進行陣列的輸入與輸出。
解決辦法:通過查閱資料,了解 mips 指令中的輸入,傳值,輸出,la $a0 ***可以將待輸出的資料或字串傳入,li 後的編號表示輸入或輸出的資料型別,本次實驗用到的 1 表示輸出整數,4 表示輸出字串,5 表示接收整數。仔細研究了 mips 程式的結構,對.data、.text、.globl main 等字段進行了深入的學習,掌握了陣列的基本操作。
仍待解決的問題:一元二次方程求解過程中遇到 b^2-4*a*c<0 的情況時,輸出 x1=0,x2=0 這類錯誤結果。
踩過的坑:
1、使用過程中 main 函式二次定義報錯
2、輸入的字元或數字不回顯
3、函式呼叫要放在 main 前面,末尾打上 jr $ra,否則會順次執行所有函式
mips中的li MIPS指令學習二
1 mips定址方式 mips架構的定址模式有暫存器定址 立即數定址 暫存器相對定址和pc相對定址4種,其中暫存器相對定址 pc相對定址介紹如下 1.1 暫存器相對定址 這種定址模式主要被載入 儲存指令使用,其對乙個16位的立即數進行符號擴充套件,然後與指定通用暫存器的值相加,從而得到有效位址。通用...
MIPS彙編 MIPS32中通用暫存器的使用約定
這段時間一直在學習mips32彙編。mips32並沒有強制指定通用暫存器的使用規則 除了0號暫存器始終為0,比較特殊 但是在實際使用中大家都會遵循一系列的約定。這裡以 的方式予以展示,當作是做個筆記,方便自己以後回看。名稱暫存器號 用途呼叫時是否儲存 zero 0常數0 不適用 v0 v1 2 3計...
MIPS 組合語言程式設計的藝術(龍芯適用)
分析系統呼叫的實現時看到這麼一段 令人不禁拍案叫絕。系統呼叫的引數傳遞,前4個引數通過a0 a3傳,後面的引數要通過棧來傳,目前核心 系統呼叫最長的引數個數為8。用棧傳遞引數時,涉及到要將位於使用者空間的引數先複製到核心空間 核心棧 因為系統呼叫的引數個數不定,因此就需要判斷引數個數為5 6 7 8...