【計算機系統設計】實踐筆記(6)改進數據通路:lw和sw指令

不想多說了……前面的鋪墊足夠了,剩下的自己做做應該也會了,如果遇到問題,就搜一下自己查閱就好。

這篇水過,沒有太多技術點。

唯一注意的是,引入的RAM和ROM的clk觸發問題,可能引起時序問題,等實際測試遇到問題再解決,問題出現之前也不知道會遇到啥。

測試

.data
a: .word 0x64.text
nop
add $1,$2,$3	# $1 = 2 + 3 = 5
addu $2,$4,$1	# $2 = 4 + 5 = 9
sub $4,$2,$1	# $4 = 9 - 5 = 4
subu $5,$4,$3	# $5 = 4 - 3 = 1and $6,$7,$8	# $6 = 0111 and 1000 = 0
or $7,$6,$8		# $7 = 0 or 1000 = 8
xor $7,$6,$8	# $7 = 0000 xor 1000 = 1000 = 8
nor $8,$7,$6	# $8 = not (1000 or 0) = 11111111111110111slt $10,$11,$12	# $10 = 11 < 12 = 1		# 應該用負數驗證,以后再說
sltu $10,$12,$11	# $10 = 12 > 11 = 0# sllv $12,$5,$13	# $12 = 1101 << 1 = 1101_0 = 1A	【注意此處的倒置問題! sllv rd,rt,rs】
# srlv $12,$5,$13	# $12 = 1101 >> 1 = 110 = 6
# srav $14,$5,$15	# $14 = 1111 >>> 1 = 111  = 7 應該用負數驗證,以后再說# 上面3條是錯誤的!我們應該改的不是使用,而是內部運算邏輯
# 對于使用者來說,邏輯就是 $13 << $5
# 而實際的編碼是 rt = $13,rs = $5,這與一般的指令不一樣
# 因此,我們在ALU運算中 rt--B,rs--A,應該是 【B << A】,而不是 A >> B。
sllv $12,$13,$5	# $12 = 1101 << 1 = 1101_0 = 1A	
srlv $12,$13,$5	# $12 = 1101 >> 1 = 110 = 6
srav $14,$15,$5	# $14 = 1111 >>> 1 = 111  = 7 應該用負數驗證,以后再說sll $16,$17,2	# $16 = 1_0001 << 2 = 100_0100 = 44	
srl $16,$18,2	# $16 = 1_0010 >> 2 = 0100 = 4
sra $16,$19,2	# 應該用負數驗證,以后再說 $16 = 4################ I type test #################
addi $17,$7,-1	# $17 = 8 - 1 = 7  測試符號擴展
addiu $17,$7,-2 # $17 = 8 - 2 = 6
andi  $17,$8,1  # $17 = 1	測試zero extension
ori $17,$8,0	# $17 = ffff_fff7 = ffff_fff7
xori $17,$8,15	# $17 = ffff_fff7 xor 0000_000f = ffff_fff8 lui $17,100	# $17 = 前16位是64_后16位是0beq $0,$10,s1	# 0 = 0,jump!
nop
nop
nops1:
addi $10,$10,1	# $10 = 1
beq $0,$10,s1	# 0 != 1,don't jump
bne $0,$0,s3	# not jump
bne $0,$10,s2	# 0 != 1,jump
nop
nop
nops2:
lw $30,0($0) # $30 = mem[0] = 0x64
sw $10,4($0)	# mem[4] = 0x1
jr $16	# PC = 4s3:

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

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

相關文章

html css 核心設計理念

分開看&#xff01; 從不同視角&#xff0c;獨立地去看某一部分內容&#xff0c;使用聚焦視角&#xff0c;進行獨立操作和批量操作。

html css 學習筆記(1)背景相關

背景顏色 圖片 插入圖片img背景圖片 背景圖片 3. logo 4. 大圖 5. 裝飾性小圖 便于控制位置&#xff01; 插入后會執行自動平鋪&#xff0c;這與插入圖片是不同的&#xff01; div{width: 600px;height: 300px;background-image: url(img/登錄用戶頭像.png); }小結 盒子的第…

html css a標簽的應用

作為普通鏈接轉換為行內塊元素 轉換為行內塊元素之后&#xff0c;就可以給其各種塊行為&#xff0c;加背景&#xff0c;加背景圖片&#xff0c;設置寬高&#xff0c;內外邊距…… 塊行為可以的&#xff0c;它都行&#xff0c;唯一的區別&#xff0c;它這個盒子是個鏈接&#…

GitHub回滾

不要直接退回到很久前的歷史版本&#xff0c;這很可能引起文件沖突&#xff0c;可以一步步回滾&#xff0c;先回滾最近的&#xff0c;從近到遠一步步滾到目標。

2020-12-15 CPU設計復盤

SOC修改 將之前完成的31條指令單周期CPU進行了重構&#xff0c;將其分開&#xff0c;實現了內外有別&#xff0c;將CPU、指令ROM和數據RAM。 這樣&#xff0c;以后為其增加接口外設&#xff0c;總線控制&#xff0c;才更加清晰&#xff0c;這是進一步封裝和抽象。 MARS大坑 …

Tomcat 學習筆記(0)

JavaWeb 用Java寫的程序&#xff0c;可以在瀏覽器運行。 Request & Responce Web資源 Web服務器 我們在自己的主機啟動Tomcat服務器&#xff0c;然后運行它&#xff0c;就能夠通過主機訪問這個服務器&#xff0c;這個服務器能夠運行我們的程序。 部署Web工程 法1 將web…

計算機系統 學習筆記(0)南京大學(一)第一周

課程&#xff1a;計算機系統基礎 核心理念&#xff1a;人類世界與計算機世界的異同 人類世界 直觀感受數學 計算機世界 與數學不同&#xff0c;存儲首先&#xff0c;各層次與現實世界不同 我們關注點是差異點&#xff01; 一樣的你就不用關心了&#xff0c;關心差異&#…

x86架構下 CF與OF標志位 帶符號和無符號運算 詳解

針對能夠影響OF和CF標志位的指令&#xff0c;一般來說是涉及到數據運算的指令&#xff0c;這里使用add舉例&#xff0c;即不區分有無符號的加法指令&#xff0c;參與運算的數據&#xff0c;從二進制層級去考慮。 CF標志位 對于CF&#xff0c;它是carry flag&#xff0c;進位標…

tmux學習筆記

參考學習鏈接 我們需要理解幾個重要的概念 session 回話window 窗口pane 窗格 window 我們打開的一個terminal就是一個window. 而打開的這個window&#xff0c;也就是打開了一個session&#xff0c;打開window&#xff0c;session開始&#xff1b;關閉window&#xff0c;se…

安裝win10和Linux雙系統的個人經驗

使用easy uefi誤刪除win10引導文件 這個時候&#xff0c;網上教程有各種方式&#xff0c;我直接使用了一種最簡單的&#xff0c;這個方法網上都沒有提到過。 注意&#xff1a;發現引導文件刪了&#xff0c;千萬不要關機&#xff0c;否則再想開機恐怕只能重裝系統了。 我們直…

Linux的ext4文件系統學習筆記

補充&#xff1a;設備獨立性 Linux中&#xff0c;設備驅動以文件形式表示&#xff0c;用戶操作邏輯設備就是操作文件&#xff0c;而不是具體的物理設備&#xff0c;也就是說&#xff0c;用戶操作的是功能&#xff0c;是黑箱&#xff0c;而不是真正的實體。 APP操作的都是邏輯…

html基礎元素案例筆記(1)

這是代碼 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>CSS FlexBox test</title><link rel"stylesheet" type"text/css" href"./css/index.css"></head><body>…

C語言中的struct和union區別

參考&#xff1a;Difference between Structure and Union in C 二者區別 struct 這里不做詳細說明&#xff0c;因為參考鏈接中都寫明了。只做一些重點強調。 struct中聲明的變量&#xff0c;在分配空間的時候&#xff0c;struct結構空間大小&#xff0c;大于等于其內部所有…

C語言多文件編譯鏈接為1個可執行文件的簡單原理

參考1&#xff1a;C header files and compilation/linking 參考2&#xff1a;計算機系統基礎&#xff08;一&#xff09;袁春風 &#xff08;符號鏈接部分&#xff09; 我們現在有一個簡單的工程&#xff0c;有這么幾個文件 1.t1.h extern int x;void tt();t1.c #include &…

Java讀寫二維數組到文件

1. 創建文件 使用了File類中的createrNewFile方法。 public static boolean createFile(String filename){try{File file new File(filename);file.createNewFile();return true;} catch (IOException e) {e.printStackTrace();return false;}}查閱文檔可知&#xff0c;若文件…

如何掌握java API的方法

如何掌握方法的使用&#xff1f; 查文檔文檔不一定看得懂&#xff0c;親自試一試就知道了&#xff01; 這倆方法沒啥好說的&#xff0c;自己體會即可&#xff01; 注意&#xff01;先看原版英文文檔&#xff0c;然后自己試一試&#xff0c;就能更加理解了&#xff0c;然后&a…

Leetcode1512. 好數對的數目 抽出本質原型 利用范圍條件

解法1&#xff1a;暴力枚舉 class Solution {public int numIdenticalPairs(int[] nums) {int count 0;for(int i 0;i < nums.length; i){for(int j i 1; j < nums.length; j){if(nums[i] nums[j])count;}}return count;} }沒啥可說的&#xff0c;就是小學數學問題…

leetcode面試題 10.01. 合并排序的數組

直接排序 直接使用Java已有的方法進行排序&#xff0c;這一招…大意了&#xff01; 這題簡單&#xff0c;就是個基本的排序&#xff0c;后面難題&#xff0c;可能這只是一小步&#xff0c;內個時候直接用排序算法比較合適&#xff0c;這個不合適。。 class Solution {public…

IA-32 Architecture: the function of segment regitster(CS DS SS ES)

對于IA-32架構&#xff0c;與8086不同&#xff0c;段寄存器不再是像以前一樣&#xff0c;直接作為段基址&#xff0c;因為32位的寄存器直接就可以表示4GB大小&#xff0c;不需要再偏移&#xff0c;因此段寄存器的含義也發生了相應的變化。 在IA-32架構里&#xff0c;段寄存器是…

x86異常處理與中斷機制(1)概述中斷的來源和處理方式

參考《計算機組成》&#xff08;北京大學 MOOC&#xff09; 1 異常與中斷的來源&#xff08;為什么需要中斷&#xff09; 首先&#xff0c;說明一下異常和中斷這兩個概念。 它們兩個唯一的區別&#xff0c;就是&#xff0c;沒有什么區別。只是不同的地方不同的時間不同的人的…