《信息安全系统设计基础》 第五周学习总结
20145224 《信息安全系統(tǒng)設(shè)計(jì)基礎(chǔ)》第五周學(xué)習(xí)總結(jié)
教材學(xué)習(xí)內(nèi)容總結(jié)
3.1 歷史觀點(diǎn)
·X86尋址的三個(gè)時(shí)代:
1、DOS時(shí)代的平坦模式,不區(qū)分用戶空間和內(nèi)核空間,很不安全; 2、8086的分段模式; 3、IA32的帶保護(hù)模式的平坦模式。3.2 程序編碼
·gcc編譯器的編譯選項(xiàng):
-01 第一級(jí)優(yōu)化 (多作為學(xué)習(xí)工具); -02 第二級(jí)優(yōu)化 (所得到的程序性能更優(yōu)); 提高優(yōu)化級(jí)別會(huì)使最終程序運(yùn)行得更快,但編譯時(shí)間也要更長,用調(diào)試工具對(duì)代碼進(jìn)行調(diào)試會(huì)更加困難。·源代碼轉(zhuǎn)化為可執(zhí)行代碼:
C預(yù)處理器擴(kuò)展源代碼;(gcc -E hello.c -o hello.i) 編譯器產(chǎn)生匯編代碼;(gcc -S hello.i -o hello.s) 匯編器將匯編代碼轉(zhuǎn)換成二進(jìn)制目標(biāo)代碼;(gcc -c hello.s -o hello.o) 鏈接器將目標(biāo)代碼文件與現(xiàn)實(shí)庫函數(shù)的代碼合并,產(chǎn)生最終的課執(zhí)行文件。(gcc hello.o -o hello)3.4訪問信息
·操作數(shù)的三種類型:立即數(shù)、寄存器、存儲(chǔ)器;
·MOV指令:將原操作數(shù)的值復(fù)制到目的操作數(shù)中;(不能夠從存儲(chǔ)器傳送到存儲(chǔ)器)
3.5 算數(shù)和邏輯操作
·加載有效地址:leal的指令形式是從存儲(chǔ)器讀數(shù)據(jù)到寄存器。但該指令并不是從指定位置讀入數(shù)據(jù),而是將有效地址寫入到目的操作數(shù)。
·一元操作:
·二元操作:
ADD(加) SUB(減) IMUL(乘) XOR(異或) OR(或) AND(與)·移位操作:
SAL(左移) SHL(左移) SAR(算數(shù)右移) SHR(邏輯右移)3.6 控制
·兩種實(shí)現(xiàn)條件行為的低級(jí)機(jī)制:測(cè)試數(shù)據(jù),然后根據(jù)測(cè)試的結(jié)果來改變控制流或者數(shù)據(jù)流;
·jump指令可以改變一組機(jī)器代碼指令的執(zhí)行順序;
·leal指令不會(huì)改變?nèi)魏螚l件碼;
·CMP和TEST只設(shè)置條件碼而不改變?nèi)魏纹渌拇嫫?#xff1b;
代碼調(diào)試中的問題和解決過程
我安裝的是64位的Ubuntu程序,但他并不能使用-m32生成32位文件:
所生成的32位文件里面是空的:
系統(tǒng)也不支持-01的編譯選項(xiàng),使用gcc -S code.c指令生成文件如下:
二進(jìn)制的機(jī)器碼使用od打開:
反匯編的結(jié)果:
本周代碼托管鏈接
https://git.oschina.net/Kevin_s/Linux_C.git
學(xué)習(xí)進(jìn)度條
| 目 標(biāo) | 5000行 | 30篇 | 400小時(shí) | |
| 第一周 | 200/200 | 2/2 | 20/20 | |
| 第二周 | 300/500 | 2/4 | 18/38 | |
| 第三周 | 500/1000 | 3/7 | 22/60 | |
| 第四周 | 300/1300 | 2/9 | 30/90 |
參考資料
- 《深入理解計(jì)算機(jī)系統(tǒng)V2》學(xué)習(xí)指導(dǎo)
- 程序的機(jī)器級(jí)表示 - 實(shí)驗(yàn)樓
- ...
轉(zhuǎn)載于:https://www.cnblogs.com/20145224kevs/p/5967157.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的《信息安全系统设计基础》 第五周学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为PHP7安装Windows Serve
- 下一篇: 微pe工具箱是微软的吗_微PE:装机不求