【计算机系统设计】学习笔记(1)03,04
- 疑問:sw和lw指令,獲取的地址==不是4的整倍數(shù)(字節(jié)不對(duì)齊)==的時(shí)候,應(yīng)該如何處理?
東南大學(xué)MOCC 計(jì)算機(jī)系統(tǒng)綜合設(shè)計(jì) 03
03-1 寄存器
介紹了MIPS寄存器,32個(gè)寄存器的基本功能和使用,注意
- 子程序調(diào)用寄存器t不保護(hù)與s的保護(hù)
- $31寄存器在子程序嵌套調(diào)用下如何使用?
- $0只能為0,寫入其他值將會(huì)被忽略,但是允許寫入,只是寫完也沒用
03-2 尋址方式
PC相對(duì)尋址
PC = (PC + 4) + ((sign-extend)imm << 2)
為什么要擴(kuò)展后左移兩位?因?yàn)?2位指令進(jìn)行字節(jié)對(duì)齊后,一定是4的倍數(shù),因此最低兩位一定是00,所以就沒必要存儲(chǔ)上再占空間,而計(jì)算的時(shí)候,則要還原它。
(字節(jié)尋址而不是字尋址)
所有跳轉(zhuǎn)指令的目標(biāo)地址,編譯存儲(chǔ)的時(shí)候,都會(huì)?4,實(shí)際運(yùn)行的時(shí)候,都是乘以4還原。
04 典型指令講解
MinSysy-1不處理異常
add和addu的區(qū)別,前者溢出后進(jìn)行異常處理,后者不進(jìn)行,因此后者常用來進(jìn)行地址計(jì)算(如果偏移量為負(fù)值,必然溢出,但實(shí)際上只是地址往上跳轉(zhuǎn)而已)
由于暫時(shí)無異常處理,所以add和addu,addi和addiu實(shí)際一樣。
sub和subu也一樣, u 代表的含義是,溢出之后有沒有異常處理。
對(duì)于立即數(shù)運(yùn)算,邏輯運(yùn)算imm是零擴(kuò)展(例如andi),算術(shù)運(yùn)算imm是符號(hào)擴(kuò)展(例如addi),這很好理解,邏輯運(yùn)算沒有有無符號(hào)數(shù)的概念。(具體指令具體分析)
注意寫操作的rs和rt的反著的,源是rt,目標(biāo)地址是rs + 偏移量
- 疑問:sw和lw指令,獲取的地址==不是4的整倍數(shù)(字節(jié)不對(duì)齊)==的時(shí)候,應(yīng)該如何處理?(比如直接忽略不對(duì)齊的部分,或者報(bào)異常)
對(duì)于字讀取,如果不是4的倍數(shù),那么最低兩位不是00,但是存儲(chǔ)的時(shí)候,也一樣>> 2,又會(huì)給抹掉了。
把16位立即數(shù),賦值給32位寄存器的高16位。
對(duì)于beq和bne指令,判斷相等不相等,直接用減法(-)判斷就行了。
- 小于則賦值,條件賦值指令
比大小,自然應(yīng)該是算術(shù)運(yùn)算,有符號(hào)數(shù)。
因此自然有無符號(hào)比較的小于置位。
顯然是邏輯上的,因此是零擴(kuò)展。
就類似于函數(shù)調(diào)用,調(diào)用完之后,要返回$31值對(duì)應(yīng)的地址。
jal和jr配合,就實(shí)現(xiàn)了過程調(diào)用和返回。
注意,有的是硬件設(shè)計(jì)相關(guān),有的則是軟件設(shè)計(jì)相關(guān)。
小結(jié)
把握指令集功能的內(nèi)在聯(lián)系,而不是堆砌它們。
總結(jié)
以上是生活随笔為你收集整理的【计算机系统设计】学习笔记(1)03,04的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 试管婴儿一次多少钱
- 下一篇: 【计算机系统设计】学习笔记(2)