2018-2019-1 20165237 《信息安全系统设计基础》第四周学习总结
生活随笔
收集整理的這篇文章主要介紹了
2018-2019-1 20165237 《信息安全系统设计基础》第四周学习总结
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2018-2019-1 20165237 《信息安全系統(tǒng)設(shè)計(jì)基礎(chǔ)》第四周學(xué)習(xí)總結(jié)
處理器體系結(jié)構(gòu)
Y86指令集體系結(jié)構(gòu)
- 內(nèi)容:定義一個(gè)指令集體系結(jié)構(gòu),包括定義各種狀態(tài)元素、指令集和它們的編碼、一組編程規(guī)范和異常事件處理
程序員可見狀態(tài):
- Y86程序中的每條指令都會(huì)讀取或修改處理器狀態(tài)的某些部分。
- Y86具體包括:8個(gè)程序寄存器、3個(gè)條件碼ZF\SF\OF、程序計(jì)數(shù)器(PC)。
- Y86用虛擬地址引用存儲(chǔ)器位置。 程序狀態(tài)的最后一個(gè)部分是狀態(tài)碼Stat,它表明程序執(zhí)行的總體狀態(tài)。
Y86指令
Y86指令
- 指令介紹:
- halt:這個(gè)指令將會(huì)終止指令的執(zhí)行
- nop:這是一個(gè)占位指令,他不做任何事,后續(xù)為了實(shí)現(xiàn)流水線,它有一定的作用
- xxmovl:這是一系列的數(shù)據(jù)傳送指令,其中r代表寄存器,m代表存儲(chǔ)器,i代表立即數(shù).比如rrmov指令,則代表將一個(gè)寄存器的值,賦給另外一個(gè)寄存器
- opl:操作指令,比如加法,減法等等
- jxx:條件跳轉(zhuǎn)指令,根據(jù)后面的條件進(jìn)行跳轉(zhuǎn)
- cmovxx:條件傳送指令,后面的xx代表的是條件.特別的是,條件傳送只發(fā)生在兩個(gè)寄存器之間,不會(huì)將數(shù)據(jù)傳送到存儲(chǔ)器.
- call與ret:方法的調(diào)用和返回指令.一個(gè)將返回地址入棧,并跳到目標(biāo)地址.一個(gè)將返回地址入PC,并跳到返回地址.
- push和pop:入棧和出棧操作
指令編碼
- 在上圖的右邊,是指令所占的字節(jié)數(shù)或者說編碼.一般兩個(gè)寄存器占用一個(gè)字節(jié),存儲(chǔ)器則占用四個(gè)字街,指令的編碼和功能占用一個(gè)字節(jié).因此可以看到,比如rrmovl指令,它的字長(zhǎng)長(zhǎng)度是2,其中第一個(gè)字節(jié)代表了指令rrmovl,第二個(gè)字節(jié)代表了兩個(gè)寄存器.
- 對(duì)于opl,jxx,cmovxx指令來說,都有一個(gè)fn標(biāo)致,占用4個(gè)二進(jìn)制位(半個(gè)字節(jié)).這個(gè)便是指令的功能部分,這個(gè)是由于他們的指令編碼一樣,但功能有所不同所造成的.比如對(duì)于opl,就有加,減,與,異或等操作,那么它們的指令編碼第一個(gè)字節(jié)就分別為十六進(jìn)制的60,61,62,63.
- 對(duì)于寄存器的表示,是使用4個(gè)二進(jìn)制位表示的,這是一個(gè)ID標(biāo)志.所有的寄存器可以看做是一個(gè)寄存器文件,其中的ID標(biāo)志就類似于它們的地址.對(duì)于一些只需要一個(gè)寄存器的指令來說,另一個(gè)寄存器標(biāo)志位使用0xF表示.
- 還有的指令需要一個(gè)字的常數(shù),比如irmovl指令,call指令等等.這種指令,將會(huì)把常數(shù)放在最后的四個(gè)字節(jié)當(dāng)中,順序按照大端法或小端法表示(與機(jī)器和OS有關(guān)).對(duì)于call指令來說,這四個(gè)字節(jié)就是一個(gè)地址,這個(gè)地址就是絕對(duì)地址,指向了存儲(chǔ)器當(dāng)中的某一個(gè)位置,這個(gè)位置存儲(chǔ)著代碼.采用絕對(duì)地址是為了描述簡(jiǎn)單,真實(shí)當(dāng)中,時(shí)采取的基于PC的相對(duì)地址.
Y86異常
- 對(duì)Y86來說,程序員可見的狀態(tài)中就有stat狀態(tài)碼,它標(biāo)志了程序執(zhí)行的狀態(tài).Y86需要有能力根據(jù)stat去做一些處理.捕獲為了簡(jiǎn)單起見,這里除了正常執(zhí)行之外,都將停止指令的執(zhí)行.真實(shí)當(dāng)中,會(huì)有專門的異常處理程序.
- Y86有四種不同的狀態(tài)碼:AOK(正常),HTL(執(zhí)行halt指令),ADR(非法地址)和INS(非法指令).
Y86程序
- Y86指令和IA32代碼的主要區(qū)別在于,它可能需要多條指令來執(zhí)行一條IA32指令能完成的所有功能。
- Y86沒有伸縮尋址模式。
- 以“.”開頭的詞是匯編器命令,命令.pos0告訴匯編器應(yīng)該從地址0處開始產(chǎn)生代碼。
- 創(chuàng)建Y86代碼的唯一工具是匯編器。
- YIS:指令集模擬器
- Y86和X86的區(qū)別在于,有的時(shí)候Y86需要兩條指令來達(dá)到X86一條指令就可以達(dá)成的目的.
- 比如對(duì)于X86指令中的addl $4,%ecx這樣的指令,由于Y86當(dāng)中的addl指令不包含立即數(shù),所以Y86需要先將立即數(shù)存如寄存器,即使用irmovl指令,然后再使用addl來處理加法運(yùn)算.
- 總的來說,Y86就是X86的一個(gè)縮減版,他的目的就是以簡(jiǎn)單的結(jié)構(gòu)來實(shí)現(xiàn)一個(gè)處理器,幫助我們了解處理器的設(shè)計(jì)和實(shí)現(xiàn).
一些Y86指令的詳情
- 大多數(shù)Y86指令是以一種直接的方式修改程序狀態(tài)的。
- 執(zhí)行pushl和popl指令時(shí),處理器的行為是不確定的,因?yàn)橐霔5募拇嫫鲿?huì)被同一條指令修改。通常有兩種約定:
- 壓入/彈出%esp的原始值
- 壓入/彈出%esp-/+4后的值
邏輯設(shè)計(jì)和硬件控制語言HCL
邏輯門
- 邏輯門是數(shù)字電路的基本計(jì)算元素,它們的輸出,等于它們輸入位值的某個(gè)布爾函數(shù)。
- 邏輯門總是活動(dòng)的,一旦一個(gè)門的輸入變化,在短時(shí)間內(nèi),輸出就會(huì)跟著變化。。
組合電路和HCL布爾表達(dá)式
- 組合電路:將很多的邏輯門組合成一個(gè)網(wǎng),能構(gòu)建計(jì)算塊。
- 多路復(fù)用:根據(jù)輸入控制信號(hào)的值,從一組不同的數(shù)據(jù)信號(hào)中選出一個(gè)。
- 構(gòu)建這些網(wǎng)有2條限制:
- (1)兩個(gè)或多個(gè)邏輯門的輸出不能連接在一起
- (2)這個(gè)網(wǎng)必須是無環(huán)的。
- HCL表達(dá)式和C語言中邏輯表達(dá)式的區(qū)別:
- (1)組合邏輯電路的輸出會(huì)持續(xù)地響應(yīng)輸入的變化;C表達(dá)式只有在程序執(zhí)行過程中被遇到時(shí)才會(huì)求值。
- (2)C的邏輯表達(dá)式允許參數(shù)是任意整數(shù),0表示FLASE,其他任何值都表示TRUE;邏輯門只對(duì)位值0和1進(jìn)行操作。
- (3)C的邏輯表達(dá)式可能只被部分求值;組合邏輯沒有部分求值的規(guī)則,邏輯門只是簡(jiǎn)單地響應(yīng)輸入的變化。
學(xué)習(xí)進(jìn)度條
| 目標(biāo) | 5000行 | 20篇 | 400小時(shí) | |
| 第一周 | 61/61 | 1/1 | 10/10 | 了解vim,gcc,gdb基本操作 |
| 第二周 | 0/61 | 1/2 | 10/20 | 了解信息的表示和處理 |
| 第三周 | 21/81 | 1/3 | 10/30 | 更深層次了解信息處理 |
| 第四周 | 29/100 | 2/5 | 10/40 | Y86處理器 |
轉(zhuǎn)載于:https://www.cnblogs.com/Miss-moon/p/9827092.html
總結(jié)
以上是生活随笔為你收集整理的2018-2019-1 20165237 《信息安全系统设计基础》第四周学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 探偵ガリレオーくさる3
- 下一篇: File Transfer(并查集)