標籤:
學習過程總結
一、gcc 編譯
使用C99特性時 gcc -std=c99 xxx.c 實驗樓環境為64位,編譯為32位機器碼: gcc -m32 xxx.c
二、重點注意知識點
p20: 三種數字:無符號數、有符號數(2進位補碼)、浮點數,資訊安全系同學從逆向角度考慮為什麼會產生漏洞
p22: 進位轉換,注意拿二進位作中間結果就好轉了
p25: gcc -m32 可以在64位機上(比如實驗樓的環境)產生32位的代碼
p26: 位元組順序是網路編程的基礎,記住小端是“高對高、低對低”,大端與之相反就可以了。
p28: 代碼執行一下
p32: 能區分邏輯運算(結果是1或0)和位元運算(結果是位向量),所有邏輯運算都可以用與、或、非表達(最大式、最小式),而與或非可以用“與非”或“或非”表達,所以,只要一個與非門,就可以完成所有的邏輯運算。
p33: 掩碼是位元運算的重要應用,對特定位可以置一,可以清零
p38: 要用C99中的“long long”類型,編譯是要用 gcc -std=c99
p39: 補碼的利用寄存器的長度是固定的特性簡化數學運算。想想鐘錶,12-1 等價於 12 + 11,利用補碼可以把數學運算統一成加法,只要一個加法器就可以實現所有的數學運算。
p44: 注意C語言中有符號數和無符號數的轉換規則,位向量不變。想想第一章說的 資訊就是“位+上下文”
p48: 怎麼樣讓負數等於正數? 資訊安全的逆向思維
p49: 0擴充和符號擴充
p52: 深入思考一下代碼和結果
p54: 如何讓整數運算溢出?如何避免? p62例子看看
p67: 關於整數運算的最後思考
p67: 浮點數有科學計數法的基礎就不難理解,IEEE標準754
p68: 浮點數運算的不精確性與舍入
p70: IEEE浮點標準,float/double類型
p74: 整數與浮點數表示同一個數位關係
p78: 整數與浮點數轉換規則
p80:家庭作業可以選做,協調好每題最多兩人一組做,一星題目一人加一分,二星加二分,三星加三分,四星加四分
三、重點練習
p24 進位轉碼
p24 show_bytes,寫個main函數測試一下,參考p30代碼
p35 練習2.11, 可以用GDB單步跟蹤一下,理解更深刻
p44 代碼放到一個main函數中,可以用GDB單步跟蹤一下,理解更深刻
p47/p49代碼放到一個main函數中,可以用GDB單步跟蹤一下,理解更深刻
p78,轉換規則可以寫幾行代碼測試一下。
未完成,回去繼續做。。。
20135219洪韶武——資訊安全系統設計基礎第三周學習總結