2017-2018-1 20155304 《信息安全系統設計基礎》第七週學習總結
教材學習內容總結
4.1:Y86指令集體系結構
- 程序員可見的狀態:每條指令都會讀取或修改處理器狀態的某些部分
- Y86包括:8個程序寄存器、3個條件碼ZF\SF\OF、程序計數器(PC)
- Y86用虛擬地址引用存儲器位置,程序狀態的最後一個部分是狀態碼Stat,它表明程序執行的總體狀態
- Y86指令:
movl分為irmovl rrmovl mrmovl rmmovl
整數指令:addl subl andl xorl
跳轉指令:jmp jle jl je jne jge jg
6個條件傳送指令:cmovle cmovl cmove cmovne cmovge cmovg
call:將返回地址入棧,然後跳到目的地址
ret:過程調用中返回
pushl:入棧
popl:出棧
halt指令停止指令的執行:,執行此指令會導致處理器停止,並將狀態碼設置為HLT - 指令的字節級編碼:每條指令需要1-6個字節不等,每條指令的第一個字節表明指令的類型
- 第一個字節:分為兩個部分,每個部分4位:
高四位:代碼部分,值域為0~0xB
低四位:功能部分,功能值只有在一組相關指令共用一個代碼時才有用 - 額外的字節
附加的寄存器指示符字節:指定一個或兩個寄存器,例如rA或者rB
附加的4字節常數字 - Y86指令和IA32代碼的主要區別在於:它可能需要多條指令來執行一條IA32指令能完成的所有功能
4.2:邏輯設計和硬件控制語言HCL
- 邏輯門符號:
AND:&&
OR:
NOT:! - 組合電路:將很多的邏輯門組合成一個網,能構建計算塊。
- 限制:
1.兩個或多個邏輯門的輸出不能連接在一起
2.這個網必須是無環的。
- 組合邏輯電路和c語言中邏輯表達式的區別
組合電路的輸出會持續響應輸入變化,c語言表達式只有在執行過程中被遇到才求值
邏輯門只對0和1操作,c語言表達式中參數可以是任意整 數,0是FALSE,不是0的都是TRUE
c的邏輯表達式可能被部分求值 - 存儲設備都是由同一個時鐘控制,包括:
時鐘寄存器(寄存器):存儲單個位或字,時鐘信號控制寄存器加載輸入值
隨機訪問存儲器(存儲器):存儲多個字,用地址來選擇該讀或該寫哪個字
4.3:Y86的順序實現
- 將處理組織成階段:
取指:從存儲器讀取指令字節,地址為程序計數器PC的值,icod指令代碼、ifun指令功能、valc四字節常數、valp下一條指令的地址=PC值+已取出指令長度
譯碼:從寄存器文件讀入最多兩個操作數
執行:算數/邏輯單元要麼執行指令指明的操作(根據ifun的值),計算存儲器引用的有效地址,要麼增加或減少棧指針,得到的值稱為valE
訪存:將數據寫入存儲器或從存儲器讀出數據,值為valM
寫回:最多可以寫兩個結果到寄存器文件
更新PC:將PC設置成下一條指令地址 - SEQ硬件結構:
取指:將程序計數器寄存器作為地址,指令存儲器讀取指令的字節
譯碼:兩個讀端口,讀寄存器valA和valB
執行:根據指令的類型,將算數/邏輯單元用於不同的目的
訪存:數據存儲器讀出或寫入一個存儲器字 - SEQ的實現包括組合邏輯和兩種存儲器設備:
時鐘寄存器:程序計數器和條件碼寄存器
隨機訪問存儲器:寄存器文件、指令存儲器和數據存儲器
代碼調試中的問題和解決過程
- 打開虛擬機時提示掛載失敗,但安裝YIS的安裝包在Windows系統上,需使用共享文件夾中的安裝包。
- 解決過程:重新手動掛載,再執行安裝過程。
其他(感悟、思考等,可選)
本週的知識點的學習重點在於4.3,對於Y86的順序實現過程中,用了很多的時間去學習的,很多知識點都是建立於棧幀的知識點上的。之前的基本功不紮實,學起來就會比較困難。但是關於HCL的知識,因為之氣學過verilog與HDL設計課程的基礎,理解起來就會容易許多
學習進度條
|
代碼行數(新增/累積)
|
博客量(新增/累積)
|
學習時間(新增/累積)
|
重要成長
|
|
|
目標
|
5000行
|
30篇
|
400小時
|
|
|
第一週
|
47/100
|
1/1
|
10/10
|
|
|
第二週
|
180/200
|
1/1
|
10/10
|
|
|
第三週
|
200/300
|
1/1
|
10/10
|
|
|
第五週
|
190/300
|
1/1
|
10/10
|
|
|
第六週
|
220/300
|
2/2
|
10/10
|
|
|
第七週
|
320/500
|
2/2
|
10/10
|
參考資料
- 《深入理解計算機系統V3》學習指導
- ...