定義乙個指令集體系結構 ,包括定義各種狀態元素、指令集和它們的編碼、一組程式設計規範和異常事件處理。
類似ia32,存在8個程式暫存器。
3個一位的條件碼:zf、sf、of
程式計數器pc存放當前正在執行指令的位址
儲存器,儲存程式和資料。y86用虛擬位址來引用儲存器位置
狀態碼stat,表明程式執行的總體狀態——可行or異常
opl(整數操作指令):
跳轉指令:
cmovxx(條件傳送指令):
call:
ret:
pushl和popl:
halt:
傳送指令 **部分為2
整數部分 **部分為6
分支指令 **部分為7
8個程式暫存器每個都有相應的0~7的暫存器識別符號
有些指令需要乙個附加的4位元組常數字,這個字能作為irmovl的立即數資料mrmmovl和mrmovl的抵制指示符的偏移量,以及分支指令和呼叫指令的目的位址。(!分支指令和呼叫指令的目的位址是乙個絕對位址)
y86的重要性質:位元組編碼必須有唯一的解釋。
yis(指令模擬器)
hclc語言中運算子的邏輯門對應的hcl表示式
多路復用器(mux)
算術/邏輯單元(alu)
兩類儲存器裝置:
隨機訪問儲存器(簡稱儲存器)儲存多個字,用位址來選擇該讀或該寫哪個字。
暫存器檔案解碼(decode):解碼截斷從暫存器檔案讀入最多兩個運算元,得到值vala和valb。
執行)(exectue):算術/邏輯單元(alu)要麼執行指令指明的操作(根據ifun的值),計算儲存器引用的有效位址,要麼增加或減少棧指標。得到的值為vale。
訪存(memory):可以將資料寫入儲存器,或者從儲存器獨處資料。獨處的值位valm。
寫回(write back):寫回截斷最多可以寫兩個結果到暫存器檔案。
更新pc(pc update):將pc設定成下一條指令的抵制。
處理器無限迴圈,執行這些階段。
當發生異常時,處理器就會停止。完整的設計中,處理器還將進入異常處理模式,開始執行由異常的型別決定的特殊**。
y86指令opl,rrmovl,irmovl在順序實現中的計算:
icode:ifun表明指令位元組的兩個組成部分,ra:rb表明暫存器指示符位元組的兩個組成部分。符號m1[x]表示訪問儲存器位置x處的乙個位元組,而m4[x]表示訪問四個位元組
y86指令儲存器讀寫指令rmmovl和mrmovl所需處理:
y86指令pushl和popl所需處理:
y86指令三類控制轉移指令所需處理:
解碼:暫存器檔案有兩個度埠a和b,從這兩個埠同時讀暫存器值vala和valb。
執行:執行截斷會根據指令的型別,將算術/邏輯單元(alu)用於不同的目的。對整數的操作,它要執行指令所指定的運算。對其他指令,它會作為乙個加法器來計算增加或減少棧指標,或者計算有效位址,或者只是簡單地加0,將乙個輸入傳遞到輸出。
訪存:在執行訪存操作,資料儲存器獨處或寫入乙個儲存器字。指令和資料儲存器訪問的是相同的儲存器位置,但是用於不同的目的。
寫回:暫存器檔案由兩個寫埠。埠e用來寫alu計算出來的值,而埠m用來寫從資料儲存器中讀出的值。
保持等價性的原則:
處理器從來不需要為了完成一條指令的執行而取讀由該指令更新了的狀態。
基本的內容與y86階段的一致,細節的差異檢視教材p263以後的相應內容。
根據指令輸入
得到結果如下
1.《computer.systems.a.programmer's.perspective.2nd.cn》教材
2.《x86的孿生兄弟,y86指令體系結構》左瀟龍的技術部落格
Django第五次學習筆記
管理器 bookinfo.objects.all objects是乙個什麼東西?objects是django幫我們自動生成的管理器物件,通過這個管理器可以實現對資料的查詢 objects是models.manger類的乙個物件。自定義管理器之後django不再幫我們生產預設的objects管理器。1...
2018 9 7第五次筆記
這次筆記是接著上上一次筆記繼續介紹基本linux命令的。5.mv move,移動 作用 在目錄建移動檔案,重新命名檔案,在需要的情況下,可以移動並重命名。基本格式 mv 原始檔pathname 目的檔案pathname 下圖是mv命令的結果顯示 wb ubuntu wb ls 1.txt arm c...
Python第五次筆記
import hashlib md hashlib.md5 md.update 你好 md md.hexdigest print md 出現以下錯誤 d pycharmprojects untitled venv scripts python.exe d pycharmprojects untitl...