自己動手寫CPU(5) 移動指令說明

2021-10-12 01:47:47 字數 1472 閱讀 6701

不涉及特殊暫存器lo、hi:

movn:判斷位址為rt的通用暫存器的值,如果不為零,將位址為rs的通用暫存器的值賦給位址為rd的通用暫存器;反之,儲存rd的值

movz:與movn相反。判斷位址為rt的通用暫存器的值,如果為零,將位址為rs的通用暫存器的值賦給位址為rd的通用暫存器;反之,儲存rd的值

涉及特殊暫存器lo、hi:

mfhi:將特殊暫存器hi的值賦給位址為rd的通用暫存器

mflo:將特殊暫存器lo的值賦給位址為rd的通用暫存器

mthi:將位址為rs的通用暫存器的值賦給特殊暫存器hi

mtlo:將位址為rs的通用暫存器的值賦給特殊暫存器lo

r型指令op[31:26]

rs[25:21]

rt[20:16]

rd[15:11]

sa[10:6]

func[5:0] 名稱

指令用法

指令作用

指令碼[31:26]

移位相關[10:6]

功能碼[5:0]

movn

movn rd, rs, rt

if rt ≠ 0 then rd

6』b 00_0000

5』b 00000

6』b 00_1011

monz

monz rd, rs, rt

if rt = 0 then rd

6』b 00_0000

5』b 00000

6』b 00_1010

mfhi

mfhi rd

rd 6』b 00_0000

5』b 00000

6』b 01_0000

mflo

mflo rd

rd 6』b 00_0000

5』b 00000

6』b 01_0010

mthi

mthi rs

hi 6』b 00_0000

5』b 00000

6』b 01_0001

mtlo

mtlo rs

lo 6』b 00_0000

5』b 00000

6』b 01_0011

用於儲存乘法、除法結果。當用於儲存乘法結果,hi暫存器儲存結果的高32位,lo暫存器儲存結果的低32位;

當用於儲存除法結果,hi暫存器儲存餘數,lo暫存器儲存商

自己動手寫CPU(9) 轉移指令說明

跳轉指令是絕對轉移 jr 將位址為rs的通用暫存器的值賦值給暫存器pc jalr 將位址為rs的通用暫存器的值賦值給暫存器pc,作為新的指令位址,同時將跳轉指令後面指令的位址作為返回位址儲存在位址為rd的通用暫存器,如果沒有在指令中指明rd,那麼預設將返回位址儲存到 31 op 31 26 rs 2...

自己動手寫bootloader

原始出處 作者資訊和本宣告。否則將追究法律責任。為了寫乙個bootloader讓板子跑起來,首先我們要知道bootloader是個什麼東東才行。簡單的說,bootloader就是乙個引導核心啟動的一段小 也就是說當啟動完核心之後,它的使命就已經結束。bootloader生命週期 初始化硬體 設定啟動...

自己動手寫CMS

簡易的cms外掛程式,可供借鑑或者擴充套件 流程 定義內容 分類與組織內容 儲存內容 操作控制內容 定義內容 制定目標 確定需要的內容型別 目標使用者定位 確定目標使用者需要何種技術 分類與組織內容 按內容所屬的邏輯層級關係來劃分 按內容的種類來劃分,比如video text audio等等 儲存內...