IA-32的系統概述


程序轉換概述

“指令”的概念

  •  計算機中的指令有微指令機器指令偽(宏)指令之分
  •   機器指令處於硬件和軟件的交界面
    •   相當於一個菜譜指定的一個完整做菜過程
    •   – 本章中提及的指令都指機器指令
  •  微指令是微程序級命令,屬於硬件范疇
    •   相當於洗、切、煮、炒等做菜“微過程“
  •   偽指令是由若干機器指令組成的指令序列,屬於軟件范疇
    •   相當於由多個菜譜合成一個”大菜“的過程
  •   匯編指令是機器指令的匯編表示形式,即符號表示 • 機器指令和匯編指令一一對應,它們都與具體機器結構有關,都 屬於機器級指令

機器級指令

Gcc使用

• 兩個源程序文件main.c和test.c,最終生成可執行文件為test

• 選項-O1表示一級優化,-O2為二級優化,選項-o指出輸出文件名

兩種目標文件

 

可執行文件的存儲器映像

 

總結

高級語言程序總是轉換為機器代碼才能在機器上執行
    • 轉換過程:預處理、編譯、匯編、鏈接
    • 機器代碼是二進制代碼,可DUMP為匯編代碼表示
    • ISA規定了一台機器的指令系統涉及到的所有方面
例如:
    – 所有指令的指令格式、功能
    – 通用寄存器的個數、位數、編號和功能
    – 存儲地址空間大小、編址方式、大/小端
    – 指令尋址方式

IA-32的系統概述

IA-32/x64指令系統概述

  • x86是Intel開發的一類處理器體系結構的泛稱
    •   – 包括 Intel 8086、80286、i386和i486等,因此其架構被 稱為“x86”
    •   – 由於數字並不能作為注冊商標,因此,后來使用了可注冊的 名稱,如Pentium、PentiumPro、Core 2、Core i7等
    •   – 現在Intel把32位x86架構的名稱x86-32改稱為IA-32
    •   – IA是Intel Architecture的縮寫
  • • 由AMD首先提出了一個兼容IA-32指令集的64位版本
    •   – 擴充了指令及寄存器長度和個數等,更新了參數傳送方式
    •   – AMD稱其為AMD64,Intel稱其為Intl64(不同於IA-64)
    •   – 命名為“x86-64” ,有時也簡稱為x64

IA-32的體系結構

IA-32的寄存器組織

IA-32的標志寄存器

 

IA-32的尋址方式

尋址方式
    – 如何根據指令給定信息得到操作數或操作數地址
• 操作數所在的位置
    – 指令中:立即尋址
    – 寄存器中:寄存器尋址
    – 存儲單元中(屬於存儲器操作數,按字節編址):其他尋址方式
• 存儲器操作數的尋址方式與微處理器的工作模式有關
    – 兩種工作模式:實地址模式和保護模式
• 實地址模式(基本用不到)
    – 為與8086/8088兼容而設,加電或復位時
    – 尋址空間為1MB,20位地址:(CS)<<4+(IP)
• 保護模式(需要掌握)
    – 加電后進入,采用虛擬存儲管理,多任務情況下隔離、保護
    – 80286以上微處理器的工作模式
    – 尋址空間為232B,32位線性地址分段(段基址+段內偏移量)

保護模式下的尋址方式

存儲器操作數的尋址方式

 

各變量應采用什么尋址方式?
x、c:位移 / 基址
a[i]:104+i×4,比例變址+位移
d[i]:544+i×8,比例變址+位移
b[i][j]: 504+i×8+j×2,
            基址+比例變址+位移
將b[i][j]取到AX中的指令可以是:
“movw 504(%ebp,%esi,2), %ax”
其中, i×8在EBP中,j在ESI中,
    2為比例因子    

 IA-32機器指令格式

總結

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM