處理器的體系結構
isa:乙個處理器支援的指令和指令的位元組級編碼稱為它的指令集體系結構isa.
y86是乙個指令體系結構(isa)暫存器、儲存器、條件碼、pc、程式狀態。
halt:這個指令將會終止指令的執行。
nop:這是乙個佔位指令,它不做任何事情,後續為了實現流水線,它有一定的作用。
xxmovl:這是一系列的資料傳送指令,其中r代表暫存器,m代表儲存器,i代表立即數。比如rrmovl指令,則代表將乙個暫存器的值,賦給另外乙個暫存器。
opl:操作指令,比如加法,減法等等。
jxx:條件跳轉指令,根據後面的條件進行跳轉。
cmovxx:條件傳送指令,後面的xx代表的是條件。特別的是,條件傳送只發生在兩個暫存器之間,不會將資料傳送到儲存器。
對於y86來說,程式猿可見的狀態中就有stat狀態碼,它標識了程式執行的狀態。y86需要有能力根據stat去做一些處理。不過為了簡單起見,這裡除了正常執行之外,都將停止指令的執行。真實當中,會有專門的異常處理程式。
y86有四種不同的狀態碼,aok(正常)、hlt(執行halt指令)、adr(非法位址)和ins(非法指令)。
y86程式
書中給出了乙個示例程式,來說明x86和y86的區別,這裡lz就不詳細分析這些彙編指令了,這種事情在第三章已經做的很多了,其實兩者是非常相似的,畢竟y86就是根據x86的結構yy出來的。區別就在於,有的時候y86需要兩條指令來達到x86一條指令就可以達成的目的。
比如對於x86指令中的 addl $4,%ecx 這樣的指令,由於y86當中的addl指令中不包含立即數,所以y86需要先將立即數存入暫存器,即使用irmovl指令,然後再使用addl來處理加法運算。
總的來說,y86就是乙個x86的縮減版,它的目的是以簡單的結構實現乙個處理器,幫助我們了解處理器的設計和實現。
1、cisc(complex instruction set computing),risc(reduced instruction-set computer),mips(million instructions per second)。
2、cisc編碼是可變長度的,ia32的指令長度可以是1~15;risc編碼是固定長度的,通常所有的指令都是編碼為4個位元組。
3、在硬體設計中,電子電路被用來計算位的函式(function on bits),以及在各種儲存元素中儲存位。大多數現代電路技術都用訊號線上的高電壓或低電壓來表示不同的位值。要實現乙個數字系統需要三個主要的組成部分:計算位的函式的組合邏輯,儲存位的儲存器元素,以及控制儲存器元素更新的時鐘訊號。
4、通常,處理一條指令包括很多操作。
2)解碼(decode):解碼階段從暫存器檔案讀入最多兩個運算元,得到值vala or/and valb。
4)訪存(memory):訪存階段可以將資料寫入儲存器,或者從儲存器讀出資料。讀出的值為valm。
5)寫回(write back):寫回階段最多可以寫兩個結果到暫存器檔案。
5、指令執行過程,從pc中取出指令,然後沿著上述的幾個步驟操作,周而復始的進行迴圈。
6、處理器從來不需要為了完成一條指令的執行而讀由指令更新的狀態。
資訊保安系統設計基礎 第9周學習筆記
對同乙個描述符,可以任意交錯地呼叫rio readn和rio writen。乙個問本行的末尾都有乙個換行 符,那麼像讀取乙個文字中的行數怎麼辦,使用read讀取換行符這個方法不是很妥當,可以呼叫乙個包裝函式 rio readineb 它從乙個內部讀緩衝區拷貝乙個文字行,當緩衝區為空時,會自動地呼叫r...
《資訊保安系統設計基礎》 第二週學習總結
首先是在linux中安裝vim和vimtutor,安裝過程如下 安裝好了以後就可以利用vim來編寫hello.c檔案了。利用gcc來進行編譯 編譯通過後即可把hello檔案執行出來了 接下來就編寫老師給出的四則運算的 把這些 都鏈結到main檔案中 老師給出的 我執行出來後除法的結果總是為 0 但是...
《資訊保安系統設計基礎》第3周學習總結
p24 在參考p30頁的 新增main函式測試 p35頁 練習2.11 進行gdb單步跟蹤測試 p44頁 p47和p49頁的 在敲這個 時,忘記定義了乙個函式,這需要運用到28頁的 再修改之後 可以繼續執行 使用gdb跟蹤測試 行數 新增 累積 部落格量 新增 累積 學習時間 新增 累積 重要成長 ...