【計算機系統設計】學習筆記(1)03,04

  • 疑問:sw和lw指令,獲取的地址==不是4的整倍數(字節不對齊)==的時候,應該如何處理?

東南大學MOCC 計算機系統綜合設計 03

03-1 寄存器

介紹了MIPS寄存器,32個寄存器的基本功能和使用,注意

  • 子程序調用寄存器t不保護與s的保護
  • $31寄存器在子程序嵌套調用下如何使用?
  • $0只能為0,寫入其他值將會被忽略,但是允許寫入,只是寫完也沒用

03-2 尋址方式

PC相對尋址

PC = (PC + 4) + ((sign-extend)imm << 2)

為什么要擴展后左移兩位?因為32位指令進行字節對齊后,一定是4的倍數,因此最低兩位一定是00,所以就沒必要存儲上再占空間,而計算的時候,則要還原它。

字節尋址而不是字尋址
在這里插入圖片描述所有跳轉指令的目標地址,編譯存儲的時候,都會?4,實際運行的時候,都是乘以4還原

04 典型指令講解

  1. MinSysy-1不處理異常

  2. addaddu的區別,前者溢出后進行異常處理,后者不進行,因此后者常用來進行地址計算(如果偏移量為負值,必然溢出,但實際上只是地址往上跳轉而已)

  3. 由于暫時無異常處理,所以add和addu,addi和addiu實際一樣。

  4. subsubu也一樣, u 代表的含義是,溢出之后有沒有異常處理。

  5. 對于立即數運算,邏輯運算imm是零擴展(例如andi),算術運算imm是符號擴展(例如addi),這很好理解,邏輯運算沒有有無符號數的概念。(具體指令具體分析

  6. 在這里插入圖片描述注意寫操作rsrt的反著的,源是rt,目標地址是rs + 偏移量

  • 疑問:sw和lw指令,獲取的地址==不是4的整倍數(字節不對齊)==的時候,應該如何處理?(比如直接忽略不對齊的部分,或者報異常)

對于字讀取,如果不是4的倍數,那么最低兩位不是00,但是存儲的時候,也一樣>> 2,又會給抹掉了。
在這里插入圖片描述把16位立即數,賦值給32位寄存器的高16位。

對于beqbne指令,判斷相等不相等,直接用減法(-)判斷就行了。

  • 小于則賦值,條件賦值指令
    在這里插入圖片描述
    在這里插入圖片描述比大小,自然應該是算術運算,有符號數。

因此自然有無符號比較的小于置位

在這里插入圖片描述在這里插入圖片描述顯然是邏輯上的,因此是零擴展

就類似于函數調用,調用完之后,要返回$31值對應的地址。

在這里插入圖片描述
jal和jr配合,就實現了過程調用和返回

注意,有的是硬件設計相關,有的則是軟件設計相關。

小結

把握指令集功能的內在聯系,而不是堆砌它們。

  1. 零擴展還是符號擴展?
    1. 一般來說,算數運算是符號擴展
    2. 邏輯運算是零擴展
  2. 溢出檢測還是不檢測?(溢出:針對有符號數,正數 + 正數 = 負數、正數 - 負數 = 負數……)
    1. 算數運算,檢測溢出
    2. 邏輯運算、地址運算,沒必要檢測
  3. 等于不等于的判斷?直接復用減法就好了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/384667.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384667.shtml
英文地址,請注明出處:http://en.pswp.cn/news/384667.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【期末考試】計算機網絡、網絡及其計算 考試重點

個人簡介&#xff1a;Java領域新星創作者&#xff1b;阿里云技術博主、星級博主、專家博主&#xff1b;正在Java學習的路上摸爬滾打&#xff0c;記錄學習的過程~ 個人主頁&#xff1a;.29.的博客 學習社區&#xff1a;進去逛一逛~ 計算機網絡及其計算 期末考點 &#x1f680;數…

【計算機系統設計】學習筆記(2)

5.1 對于CPU與外界的讀寫&#xff0c;只有load和store指令能夠做&#xff0c;所以很多情況下&#xff0c;直接通過bypass跳過去了&#xff0c;或者閑置&#xff0c;尤其對于流水線&#xff0c;更應該直接跳過而不是閑置&#xff08;如何設計?&#xff09;。 另一方面&#xf…

【計算機系統設計】重點 · 學習筆記(1)(資源消耗)

這一點先淺顯理解&#xff0c;就好比我要造一個樓 我是用現成的材料造節省?還是需要用XX材料&#xff0c;但是XX材料還需要現成材料造呢&#xff1f; 這也不一定&#xff0c;但是基本來說&#xff0c;如果使用現有資源&#xff0c;能夠直接用&#xff0c;那其實是最好不過的…

【計算機系統設計】重點 · 學習筆記(0)(數據通路設計思想)

重點1&#xff1a;05.1 設計思想 設計思想至關重要&#xff0c;這決定了你能不能自己根據ISA設計出來CPU架構&#xff0c;而不是只是抄別人的&#xff0c;也決定你能不能完成自己的設計更優化的架構。 描述方式約定 6 數據通路 ≠ Verilog代碼 我們構建的數據通路&#…

【計算機系統設計】實踐筆記(1)數據通路構建:取指部件分析

0 核心思想 根據指令功能&#xff0c;分析出需求&#xff0c;從而得出需要的部件、控制信號以及其他設計。 1. 針對的指令 取指階段&#xff0c;針對所有指令&#xff0c;任何指令都需要進行取指。 2 功能&#xff08;需求&#xff09;分析 CPU的內部采用的是字節編址&…

【計算機系統設計】實踐筆記(2)數據通路構建:第一類R型指令分析(1)

0 回顧 上一次實踐筆記&#xff08;0&#xff09;我們實現了一個最簡單的&#xff0c;能夠每個上升沿4的PC。 我們最需要關注的就是器件功能的獨立性&#xff0c;避免內外功能混雜&#xff0c;同時一定要注意腦中有電路&#xff08;RTL級描述的抽象電路而不是實際的門級電路&…

接口的抽象與實現(概述)

概述 我們先建立一個整體的接口格局觀&#xff0c;建立知識地圖&#xff0c;了解接口的大概面貌。 整體來說&#xff0c;就這點事兒&#xff0c;4個箭頭代表了所有&#xff01; 三個器件4個箭頭 把這幾個都想明白&#xff0c;就完事兒了。 第一層&#xff08;頂層&#xf…

從功能層次,闡述CPU、接口和外設之間的交互

我們從功能抽象層次&#xff0c;闡述一下CPU、接口芯片和外設之間的交互情況&#xff1a; 三個器件4個箭頭 我們依次將其描述清楚。 數據 箭頭①和③ CPU給接口可以發送數據&#xff0c;然后接口暫存數據&#xff0c;之后再發給外設&#xff0c;這就是數據緩沖。 發送的數…

【接口技術】8086的IN和OUT指令

x86采用獨立編址的方式&#xff0c;IO端口地址和存儲器地址是分開的。 對于IO存儲器訪問&#xff0c;需要使用獨立的IO指令&#xff0c;也就是IN和OUT 兩類地址 地址空間大小在8位以下地址空間大小在16位以下 兩種格式 對于兩類不同的地址&#xff0c;IO指令的格式不一樣。…

Vivado工程文件分類

只需要在創建的時候&#xff0c;選擇自定義路徑即可&#xff0c;最好在原有的new文件夾下新建文件夾。 至于路徑的匹配&#xff0c;可以自己試試&#xff0c;在原有默認new下創建文件夾&#xff0c;選中新的文件夾后&#xff0c;內部的Verilog文件可以訪問外部new文件夾的文件&…

【微機原理與接口技術】具體芯片(1)并行接口8255A(1):全局觀

并行接口8255A 首先&#xff0c;它是傳輸并行數據的&#xff0c;與CPU一樣&#xff0c;然后&#xff0c;它是可編程的&#xff0c;也是多功能的&#xff0c;CPU可以對其進行一些控制。 管腳 先從最宏觀層面分類 一部分引腳與外設相連一部分引腳與CPU相連GND和Vcc 注意&…

【微機原理與接口技術】多功能可編程芯片 與 多功能電飯煲

多功能可編程芯片&#xff0c;就像你的多功能電飯煲&#xff0c;你點了不同的按鍵&#xff0c;就啟動了不同的工作方式&#xff0c;是熬粥還是做米飯&#xff0c;之后你又得選擇壓力和時間。 而在芯片上&#xff0c;你得先設置控制字&#xff0c;也就是 先選擇工作方式&#…

什么是地址譯碼 理解二進制編碼

我們知道存儲器都是有多個芯片組合而成的&#xff0c;必然涉及到片選&#xff0c;因此我們將地址分開看 前面的一部分&#xff0c;是片選&#xff0c;也就是選中某個芯片&#xff08;使用譯碼器&#xff0c;2-4譯碼器就是2位地址可以選擇4個芯片&#xff09;后面的部分&#x…

【微機原理與接口技術】具體芯片(1)并行接口8255A(2):控制字概述

核心 對于一個多功能可編程接口芯片&#xff0c;我們要想使用它&#xff0c;必須 先確定需求&#xff0c;要用什么芯片去干什么設置芯片的工作方式然后再讓芯片工作 至于設置的方式&#xff0c;當然是軟件編程。 同時重點注意&#xff0c;例如8255A&#xff0c;它一次只能寫…

【算法】【殊途同歸】搜索算法之(深度優先 || 廣度優先) (約束條件 || 限界函數)

對于所謂的分支限界法和回溯法&#xff0c;我們完全可以更加靈活&#xff0c;請看表格。 深度優先廣度優先約束條件限界函數算法策略√√回溯法局部判定√√√分支限界法局部判定√√√加限界的回溯法局部判定√枚舉法全局判定√枚舉法全局判定 前兩種是我們常見的&#xff0c…

【算法】學習方法

看理論學示例做圖示 最重要的是 最開始直接抄別人的優秀的代碼&#xff0c;就是如此簡單&#xff0c;擺正心態&#xff0c;最開始不要非得自己想怎么做。

【算法】學習筆記(0):算法初探(邏輯抽象 + 示例 + 代碼實現)

什么是算法? 人生皆算法&#xff0c;算法的本質&#xff0c;是解決問題的方法&#xff0c;遇到問題&#xff0c;尋找答案&#xff0c;解決問題&#xff0c;是作為一個人&#xff0c;一生都在做的事情。 算法是人類思維的產物&#xff0c;是解決問題的方案&#xff0c;并且&a…

【Verilog】數據流建模傳輸問題:賦值傳輸有方向

這次&#xff0c;我們說明的是&#xff0c;assign語句實現的數據流建模&#xff0c;包含的是兩個層面 建立聯系傳輸方向 assign A B的本質含義是 A與B建立關聯B的值傳給A 這個傳輸方向至關重要&#xff0c;實際情況是什么&#xff0c;就必須按照順序進行&#xff0c;不是單…

【計算機系統設計】實踐筆記(2)數據通路構建:第一類R型指令分析(2)

待辦事項 時鐘頻率高&#xff0c;取指周期長&#xff0c;遠大于執行周期&#xff0c;如何處理&#xff1f; 不可綜合邏輯的處理 接上一篇 【計算機系統設計】實踐筆記&#xff08;2&#xff09;數據通路構建&#xff1a;第一類R型指令分析&#xff08;1&#xff09; 8.2 ALU運…