日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

2017-2018-1 20155234《信息安全系统设计基础》第五周学习总结

發布時間:2025/5/22 windows 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2017-2018-1 20155234《信息安全系统设计基础》第五周学习总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

20155234第一周《信息安全系統設計基礎》學習總結

程序的機器級表示

3.2程序編碼

gcc是Linux上默認的編譯器 。gcc -0g告訴編譯器使用第一級優化。優化等級越高,程序運行的越快,編譯時間越長,用調試工具調試程序越困難。高級別的的優化產生的代碼會嚴重改變形式。
gcc將源代碼轉換為可執行代碼。首先,C預處理器擴展源代碼,插入所有用#include命令指定的文件,并擴展所有用#define聲明指定的宏。
匯編器將匯編代碼轉換成二進制目標代碼,目標代碼是機器代碼的一種形式,包含所有指令的二進制表示,但沒有填入地址的全局值。
連接器將目標文件與實現庫函數的代碼合并,并產生最終的可執行代碼文件。可執行代碼是處理器執行的代碼格式。

3.2.2 代碼示例

gcc -01 -s code.c //使用“-s” 就能得到C語言編譯器產生的匯編代碼 。這會產生一個匯編文件 code.s
gcc -01 -c code.c //使用“-c”gcc會編譯并匯編該代碼,產生目標代碼文件code.o,他是二進制格式,無法直接查看。
反匯編器可以查看目標文件內容:objdump -d code.o
“gcc -01 -o prog code.o main.c” 通過之前講的,應該是讓編譯器將目標文件“code.o”與實際函數庫 “main.c”合并 生成可執行文件prog

3.2.3 關于格式的注解

3.3 數據格式

單精度:4字節 雙精度:8字節 擴展精度:10字節實際存儲成12字節
moveb、movw、movl:對應字節、字、雙字。

3.5 算術和邏輯操作

加載有效地址
一元操作
二元操作
移位操作

3.5.1 加載有效地址

加油有效地址“leal”-將有效地址寫到目的操作數,目的操作數必須是一個寄存器。

3.5.2 一元操作和二元操作

一元操作,它只有一個操作數,既是原操作數又是目的操作數,操作數可以是一個寄存器,也可以是一個存儲器位置。
二元操作,有兩個操作數,第一個為原操作數,可以是立即數、寄存器或存儲器位置;第二個為目的操作數,可以是寄存器或者是存儲器位置。
二元操作,有兩個操作數,第一個為原操作數,可以是立即數、寄存器或存儲器位置;第二個為目的操作數,可以是寄存器或者是存儲器位置。

3.5.3 移位操作

移位操作,先給出位移量,第二項給出要移位的數值。
因為32為計算機,所以以為最多移位31為(排除循環移位),所以只允許0到31位的位移。
位移量可以是個立即數,或者是只允許%cl。
SAL和AHL沒有區別。
SAR為算數右移,最高位要和符號標志位配合進行算數右移。
SHR為邏輯右移。
移位操作的目的操作數可以是一個寄存器或者是一個存儲器的位置。

3.5.5 特殊的算術操作

雙操作數乘法(imull)指令,從兩個32位的操作數產生一個32位的乘積。
單操作數乘法指令mull和imull,這兩條指令都要求一個參數必須在寄存器%eax中,另一個由原操作數給出,高32為存放在%edx中,低32為存放在%eax中。

3.6.1 條件碼

CF:進位標志
ZF:零標志
SF:符號標志
OF:溢出標志位
leal指令不改變任何條件,用它進行地址計算。
對于移位操作,進位標志將設置為最后一個移除的位,而溢出標志設置為0.
CMP指令根據他們的兩個操作數之差來設置條件碼,CMP與SUB指令的行為是一致的。
TEST指令與AND指令的行為是一致的。

3.6.2 訪問條件碼

SET指令的目的操作數是8個單字節寄存器元素之一,或者是一個字節的存儲器位置,將這個字節設置成0或者1。
movzbl指令用來清零%eax的三個高字節。

3.6.3 跳轉指令及其編碼

jmp指令是無條件跳轉,它可以是直接跳轉,即跳轉目標是作為指令的一部分編碼的;也可以是間接跳轉,即跳轉目標是從寄存器或存儲器位置中讀出的。
程序計數器的值是跳轉指令后面的那條指令的地址,而不是跳轉指令本身的地址。

3.7.1 棧幀結構

為單個過程分配的那部分稱為棧幀。
%esp:棧指針
%ebp:幀指針
棧指針可以移動,因此大多數信息的訪問是通過棧指針的
3.7.2棧幀結構
call指令有一個目標,即指明被調用過程起始的指令地址,直接調用是一個標號,間接調用是“*”后面跟一個操作指示符。
call指令的效果是將返回地址入棧,并跳轉到被調用過程的起始位置。
ret指令從棧中彈出地址,并跳轉到這個位置。
%exa用來返回值
leave為返回值做好準備

代碼托管

結對搭檔

201555226

感想

因為我上學期匯編學的不夠好導致理解困難。特別是看棧幀及遞歸調用這部分,雖然看了很多,但是還是不能很好地去理解運用。

學習進度條

代碼行數(新增/累積)博客量(新增/累積)
目標5000行30篇
第一周6/61/1
第三周150/1562/3
第四周77/2331/4

參考資料

  • 《深入理解計算機系統V3》學習指導

轉載于:https://www.cnblogs.com/zxm20/p/7709436.html

總結

以上是生活随笔為你收集整理的2017-2018-1 20155234《信息安全系统设计基础》第五周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。