x86/x64 體系探索及編程 x86/x64体系探索及编程

鄧志

  • 出版商: 電子工業
  • 出版日期: 2012-10-01
  • 定價: $714
  • 售價: 8.5$607
  • 語言: 簡體中文
  • 頁數: 813
  • 裝訂: 平裝
  • ISBN: 7121181762
  • ISBN-13: 9787121181764

已絕版

買這商品的人也買了...

相關主題

商品描述

<內容簡介>

鄧志編著的《x86\x64體系探索及編程》是對Intel手冊所述處理器架構的探索和論證。全書共五大部分,從多個方面對處理器架構相關的知識進行了梳理介紹。書中每個章節都有相應的測試實驗,所運行的實驗例子都可以在真實的機器上執行。
    通過閱讀《x86\x64體系探索及編程》,讀者應能培養自己動手實驗的能力。如果再有一些OS方面的相關知識,基本上就可以寫出自己簡易的OS核心。
    本書適合有一定的x86基礎知識,且對瞭解處理器架構及編程感興趣的讀者閱讀。

<目錄>

 第一篇  x86基礎
  第1章  數與數據類型
    1.1  數
      1.1.1  數字
      1.1.2  二進制數
      1.1.3  二進制數的排列
      1.1.4  十六進制數
      1.1.5  八進制數與十進制數
    1.2  數據類型
      1.2.1  integer數
      1.2.2  floating-point數
      1.2.3  real number(實數)與NaN(not a number)
      1.2.4  unsupported編碼值
      1.2.5  浮點數精度的轉換
      1.2.6  浮點數的溢出
      1.2.7  BCD碼
      1.2.8  SIMD數據
  第2章  x86/x64編程基礎
    2.1  選擇編譯器
    2.2  機器語言
    2.3  Hello world
      2.3.1  使用寄存器傳遞參數
      2.3.2  調用過程
      2.3.3  定義變量
    2.4  16位編程、32位編程,以及64位編程
      2.4.1  通用寄存器
      2.4.2  操作數大小
      2.4.3  64位模式下的內存地址
      2.4.4  內存尋址模式
      2.4.5  內存尋址範圍
      2.4.6  使用的指令限制
    2.5  編程基礎
      2.5.1  操作數尋址
      2.5.2  傳送數據指令
      2.5.3  位操作指令
      2.5.4  算術指令
      2.5.5  CALL與RET指令
      2.5.6  跳轉指令
    2.6  編輯與編譯、運行
  第3章  編寫本書的實驗例子
    3.1  實驗的運行環境
    3.2  生成空白的映像文件
      3.2.1  使用nasm編譯器生成
      3.2.2  使用bximage工具
    3.3  設置bochs配置文件
    3.4  源代碼的基本結構
    3.5  編譯源代碼
    3.6  映像文件內的組織
    3.7  使用merge工具
      3.7.1  merge的配置文件
      3.7.2  執行merge命令
    3.8  使用U盤啟動真實機器
      3.8.1  使用merge工具寫U盤
      3.8.2  使用hex編輯軟件寫U盤
    3.9  編寫boot代碼
      3.9.1  LBA轉換為CHS
      3.9.2  測試是否支持int 13h擴展功能
      3.9.3  使用int 13h擴展讀磁盤
      3.9.4  最後看看load_module()
    3.10  總結
  第4章  處理器的身份
    4.1  測試是否支持CPUID指令
    4.2  CPUID指令的術語及表達
    4.3  基本信息與擴展信息
    4.4  處理器的型號(family,model與stepping)
    4.5  最大的物理地址和線性地址
    4.6  處理器擴展狀態信息
      4.6.1  探測Processor Extended State子葉
      4.6.2  Processor Extended State子葉所需內存size
      4.6.3  Processor Extended State的保存
      4.6.4  Processor Extended State的恢復
    4.7  處理器的特性
    4.8  處理器的Cache與TLB信息
    4.9  MONITOR/MWAIT信息
    4.10  處理器的long mode
  第5章  瞭解Flags
    5.1  Eflags中的狀態標誌位
      5.1.1  signed數的運算
      5.1.2  unsigned數的運算
    5.2  IOPL標誌位
    5.3  TF標誌與RF標誌
    5.4  NT標誌
    5.5  AC標誌
    5.6  VM標誌
    5.7  eflags寄存器的其他事項
  第6章  處理器的控制寄存器
    6.1  CR8
    6.2  CR3
    6.3  CR0
      6.3.1  保護模式位PE
      6.3.2  x87 FPU單元的執行環境
      6.3.3  CR0.PG控制位
      6.3.4  CR0.CD與CR0.NW控制位
      6.3.5  CR0.WP控制位
      6.3.6  CR0.AM控制位
    6.4  CR4
      6.4.1  CR4.TSD與CR4.PCE控制位
      6.4.2  CR4.DE與CR4.MCD控制位
      6.4.3  CR4.OSFXSR控制位
      6.4.4  CR4.VMXE與CR4.SMXE控制位
      6.4.5  CR4.PCIDE與CR4.SMEP控制位
      6.4.6  CR4.OSXSAVE控制位
      6.4.7  CR4中關於頁的控制位
    6.5  EFER擴展功能寄存器
  第7章  MSR
    7.1  MSR的使用
    7.2  MTRR
      7.2.1  Fixed-range區域的映射
      7.2.2  MTRR的功能寄存器
    7.3  MSR中對特殊指令的支持
      7.3.1  支持sysenter/sysexit指令的MSR
      7.3.2  支持syscall/sysret指令的MSR
      7.3.3  支持swapgs指令的MSR
      7.3.4  支持monitor/mwait指令的MSR
    7.4  提供processor feature管理
    7.5  其他未列出來的MSR
    7.6  關於MSR一些後續說明
第二篇  處理器的工作模式
  第8章  實地址模式
    8.1  真實的地址
    8.2  real mode的編址
    8.3  real mode的狀態
    8.4  段基址的計算
    8.5  第1條執行的指令
    8.6  實模式下的執行環境
    8.7  實模式下的IVT
    8.8  突破64K段限
    8.9  A20地址線
  第9章  SMM系統管理模式探索
    9.1  進入SMM
    9.2  SMM的運行環境
      9.2.1  SMRAM區域
      9.2.2  SMM執行環境的初始化
      9.2.3  SMM下的operand與address
      9.2.4  SMM下的CS與EIP
      9.2.5  SMM下的SS與ESP
    9.3  SMM里的中斷
    9.4  SMI的Back-to-Back響應
    9.5  SMM里開啟保護模式
    9.6  SMM的版本
    9.7  I/O指令的重啟及Halt重啟
    9.8  SMM的退出
    9.9  SMBASE的重定位
    9.10  SMI處理程序的初始化
    9.11  SMM的安全
      9.11.1  芯片組的控制
      9.11.2  處理器對SMRAM空間的限制
      9.11.3  cache的限制
    9.12  測試SMI處理程序
  第10章  x86/x64保護模式體系(上)
    10.1  x86/x64的權限
    10.2  保護模式下的環境
      10.2.1  段式管理所使用的資源
      10.2.2  paging分頁機制所使用的資源
    10.3  物理地址的產生
    10.4  段式管理機制
      10.4.1  段式內存管理
      10.4.2  段式的保護措施
    10.5  段式管理的數據結構
      10.5.1  Segment Selector(段選擇子)
      10.5.2  Descriptor Table(描述符表)
      10.5.3  Segment Selector Register(段寄存器)
      10.5.4  Segment Descriptor(段描述符)
      10.5.5  LDT描述符與LDT
    10.6  開啟保護模式
      10.6.1  初始化GDT
      10.6.2  初始化IDT
      10.6.3  切換到保護模式
  第11章  x86/x64保護模式體系(下)
    11.1  物理頁面
      11.1.1  處理器的最高物理地址(MAXPHYADDR)
      11.1.2  物理頁面的大小
      11.1.3  頁轉換模式(Paging Mode)
    11.2  paging機制下使用的資源
      11.2.1  寄存器
      11.2.2  CPUID查詢leaf
      11.2.3  寄存器的控制位
      11.2.4  頁轉換表資源
    11.3  32位paging模式(non-PAE模式)
      11.3.1  CR3結構
      11.3.2  32位paging模式下的PDE結構
      11.3.3  使用32位paging
    11.4  PAE paging模式
      11.4.1  在Intel64下的CR3與PDPTE寄存器
      11.4.2  在AMD64下的CR3
      11.4.3  PAE paging模式里的PDPTE結構
      11.4.4  PAE paging模式里的PDE結構
      11.4.5  PAE paging模式里的PTE結構
      11.4.6  使用和測試PAE paging模式
      11.4.7  使用和測試Execution Disable功能
    11.5  IA-32e paging模式
      11.5.1  IA-32e paging模式下的CR3
      11.5.2  IA-32e paging模式下的PML4E結構
      11.5.3  IA-32e paging模式下的PDPTE結構
      11.5.4  IA-32e paging模式下的PDE結構
      11.5.5  IA-32e paging模式下的PTE