1. 程式人生 > >2018-2019-1 20165206 《信息安全系統設計基礎》第3周學習總結

2018-2019-1 20165206 《信息安全系統設計基礎》第3周學習總結

圖片 info 程序 鏈接器 命令 擴展 mage bubuko 類型

- 2018-2019-1 20165206 《信息安全系統設計基礎》第3周學習總結

- 教材學習內容總結

  • 程序編碼:gcc命令調用一整套的程序將源代碼轉化為可執行文件。
    首先,C預處理器擴展源代碼;
    其次,編譯器產生源文件的匯編代碼;
    然後,匯編器將匯編代碼轉為二進制目標代碼文件;
    最後,鏈接器將目標代碼文件與實現庫函數的代碼合並,產生可執行代碼文件。

  • 機器級編碼的兩個抽象:
    第一種是ISA,即指令集體系結構或指令集架構,定義了處理器狀態、指令的格式,以及每條指令對狀態的影響。
    第二種是機器級程序使用的內存地址是虛擬地址。

  • 匯編與反匯編:
    查看C語言編譯器產生匯編代碼的指令:

gcc -Og -S main.c

gcc編譯並匯編的指令:

gcc -Og -c main.c

反匯編的指令:

objdup -d main.o

示例:

源代碼:
技術分享圖片

匯編:
技術分享圖片

反匯編:
技術分享圖片

  • 操作數的三種類型:
    第一種是立即數,用來表示常數值。
    第二種是寄存器,表示某個寄存器的內容。
    第三種是內存引用,根據有效地址訪問某個內存位置。

  • 有效地址計算公式:
    一個立即數偏移Imm,一個基址寄存器rb,一個變址寄存器ri,一個比例因子s,有效地址被計算為:Imm + R[rb] + R[ri]*s

  • 數據傳送指令

- 上周考試錯題總結

  • 錯題一:字長32位的機器,虛擬地址空間範圍是(0-2^32-1)。

  • 錯題二:a=[0010], b=[1100], a||b的值是(非零(TRUE))。

2018-2019-1 20165206 《信息安全系統設計基礎》第3周學習總結