20145309 《信息安全系统设计基础》第5周学习总结
教材學(xué)習(xí)內(nèi)容總結(jié)
部分知識點
?ISA:定義了處理器狀態(tài),指令的格式,每條指令對狀態(tài)的影響。
gcc -O1 -S text.c
?尋址方式經(jīng)歷的三代
1 DOS時代的平坦模式,不區(qū)分用戶空間和內(nèi)核空間,很不安全
2 8086的分段模式
3 IA32的帶保護模式的平坦模式
寄存器
?程序計數(shù)器(在IA32中,通常稱為“PC”,用%eip表示)
指示將要執(zhí)行的下一條指令在存儲器中的地址。
?整數(shù)寄存器
包含8個命名的位置,分別存儲32位的數(shù)值,這些寄存器可以存儲地址(對應(yīng)C語言的指針)或整數(shù)數(shù)據(jù),有的寄存器被用來記錄某些重要的程序狀態(tài),其他的寄存器用來保存臨時數(shù)據(jù),例如過程的局部變量和函數(shù)的返回值。
?條碼寄存器
保存著最近執(zhí)行的算術(shù)或邏輯指令的狀態(tài)信息,他們用來實現(xiàn)控制或數(shù)據(jù)流中的條件變化。
?浮點寄存器
一組浮點寄存器存放浮點數(shù)據(jù)
?8位寄存器有: AH、AL、BH、BL、CH、CL、DH和DL等;
?16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等;
?32位寄存器有:EAX、EBX、ECX、EDX、ESI、EDI、ESP和EBP等。
內(nèi)存中的變量存儲的是其偏移地址
?esi edi可以用來操縱數(shù)組,esp ebp用來操縱棧幀。
尋址方式
操作數(shù):立即數(shù)($9)、寄存器(%eax)、存儲器
有效地址=立即數(shù)+基址寄存器的值+變址寄存器的值*比例因子
CMP和SUB
CMP是不會改變源操作數(shù)的減法,只是做比較之后改變標(biāo)志位。
SUB是會改變源操作數(shù)的減法。
?64位機器上想要得到32代碼:gcc -m32 -S xxx.c
?
程序編碼
- 編譯:gcc -01 -o p p1.c,-01:表示使用第一級優(yōu)化。通常提高優(yōu)化級別會使最終程序運行得更快,但是編譯時間可能會變長,用調(diào)試工具對代碼進行調(diào)試會更困難。(實際中,第二級優(yōu)化-02被認(rèn)為是較好的選擇)
- 兩種抽象:
- 指令集結(jié)構(gòu)ISA:是機器級程序的格式和行為,定義了處理器狀態(tài)、指令的格式,以及每條指令對狀態(tài)的影響。
- 機器級程序使用的存儲器地址是虛擬地址,看上去是一個非常大的字節(jié)數(shù)組,實際上是將多個硬件存儲器和操作系統(tǒng)軟件組合起來。
- 一些通常對C語言程序員隱藏的機器代碼在IA32中是可見的:
- 程序計數(shù)器(在IA32中,通常稱為“PC”,用%eip表示)指示將要執(zhí)行的下一條指令在存儲器中的地址。
- 整數(shù)寄存器:包含8個命名的位置,分別存儲32位的數(shù)值,這些寄存器可以存儲地址(對應(yīng)C語言的指針)或整數(shù)數(shù)據(jù),有的寄存器被用來記錄某些重要的程序狀態(tài),其他的寄存器用來保存臨時數(shù)據(jù),例如過程的局部變量和函數(shù)的返回值。
- 條碼寄存器:保存著最近執(zhí)行的算術(shù)或邏輯指令的狀態(tài)信息,他們用來實現(xiàn)控制或數(shù)據(jù)流中的條件變化。
- 浮點寄存器:一組浮點寄存器存放浮點數(shù)據(jù)
- 一條機器指令只執(zhí)行一個非常基本的操作
- 本周代碼托管:
- https://git.oschina.net/69M/LH20145309_Linux.git
轉(zhuǎn)載于:https://www.cnblogs.com/zym0728/p/5967914.html
總結(jié)
以上是生活随笔為你收集整理的20145309 《信息安全系统设计基础》第5周学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flask快速入门
- 下一篇: java信息管理系统总结_java实现科