64位彙編語言的程式設計藝術 The Art of 64-Bit Assembly: x86-64 Machine Organization and Programming

Randall Hyde 譯者 江紅//余青松//餘靖

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

商品描述

本書源自於作者的經典書籍The Art of Assembly Language,從32位組合語言升級為64位組合語言,
基於Microsoft巨集組譯器(MASM)講解x86-64 CPU上組譯語言的程式設計藝術。
本書從電腦的組成結構開始介紹,包括電腦資料表示和運算,以及記憶體的存取和組織等。
之後詳細講解組合語言程式設計,涉及過程和算術運算的相關知識,
再透過低階控制結構過渡到高階主題,如表查找和位元操作。
此外,也探討了x87浮點單元、SIMD指令,以及MASM的巨集工具。

目錄大綱

目  錄
The Art of 64-Bit Assembly: x86-64 Machine Organization and Programming
譯者序
推薦序
前言
致謝
第一部分 計算機的組成結構
第1章 彙編語言的第一個程式  2
1.1 先決條件  2
1.2 在電腦上安裝MASM  3
1.3 在電腦上安裝文字編輯器  3
1.4 MASM程式的結構剖析  3
1.5 運行第一個MASM程式  4
1.6 運行第一個MASM和C 的混合程式  4
1.7 英特爾x86-64 CPU系列簡介  6
1.8 內存子系統  9
1.9 在MASM中宣告內存變數  10
1.9.1 將記憶體位址與變數關聯  11
1.9.2 將資料型態與變數關聯  12
1.10 在MASM中聲明(命名)常數  12
1.11 基本的機器指令  13
1.11.1 mov指令  13
1.11.2 指令操作數的型別檢查  14
1.11.3 add和sub指令  15
1.11.4 lea指令  15
1.11.5 call和ret指令以及MASM過程  16
1.12 呼叫C/C 過程  17
1.13 「Hello, world!」程序  18
1.14 在組合語言中傳回函數結果  19
1.15 自動化建置流程  24
1.16 微軟ABI註釋  25
1.16.1 變數大小  25
1.16.2 暫存器的用途  28
1.16.3 棧對齊  28
1.17 拓展閱讀資料  28
1.18 自測題  29
第2章 計算機資料表示與運算  31
2.1 數制系統  31
2.1.1 十進制數制系統的回顧  31
2.1.2 二進制數制系統  32
2.1.3 二進位約定  32
2.2 十六進位數制系統  33
2.3 關於數字與表示的註解  34
2.4 資料組織  36
2.4.1 位  36
2.4.2 半字節  36
2.4.3 位元組  37
2.4.4 字  38
2.4.5 雙字  39
2.4.6 四字和八字  39
2.5 位元的邏輯運算  39
2.5.1 邏輯與運算  40
2.5.2 邏輯或運算  40
2.5.3 邏輯異或運算  40
2.5.4 邏輯非運算  41
2.6 二進制數和位元串的邏輯運算  41
2.7 有符號數和無符號數  45
2.8 符號擴展與零擴展  49
2.9 符號縮減與飽和法  49
2.10 簡要回顧:控制轉移指令概述  50
2.10.1 jmp指令  50
2.10.2 條件跳轉指令  51
2.10.3 cmp指令與對應的條件跳轉  52
2.10.4 條件跳轉的同義詞  53
2.11 移位與循環移位  54
2.12 位元欄位和打包資料  57
2.13 IEEE浮點數格式  63
2.13.1 單精度格式  64
2.13.2 雙精度格式  65
2.13.3 擴充精度格式  65
2.13.4 規範化浮點值  65
2.13.5 非數值資料  66
2.13.6 MASM對浮點數值的支援  66
2.14 BCD表示法  67
2.15 字符  67
2.15.1 ASCII字元編碼  68
2.15.2 MASM對ASCII字元的支援  69
2.16 Unicode字元集  70
2.16.1 Unicode碼位  70
2.16.2 Unicode碼平面  70
2.16.3 Unicode編碼  71
2.17 MASM對Unicode的支援  72
2.18 拓展閱讀資料  72
2.19 自測題  72
第3章 記憶體的存取與組織  76
3.1 運行時的記憶體組織  76
3.1.1 「.code」段  77
3.1.2 「.data」段  77
3.1.3 「.const」段  78
3.1.4 「.data?」段  79
3.1.5 程序中聲明段的組織方式  79
3.1.6 記憶體存取與4KB記憶體管理單元頁  80
3.2 MASM如何為變數分配記憶體  81
3.3 標籤聲明  82
3.4 小端模式與大端模式的資料組織方式  82
3.5 記憶體存取  84
3.6 MASM對資料對齊的支援  85
3.7 x86-64的尋址模式  87
3.7.1 x86-64的暫存器尋址模式  88
3.7.2 x86-64的64位元記憶體定址模式  88
3.7.3 不支援大位址的應用程式  91
3.8 位址表達式  94
3.9 棧段以及push和pop指令  97
3.9.1 基本的push指令  97
3.9.2 基本的pop指令  98
3.9.3 使用push和pop指令保存暫存器的狀態  99
3.10 棧  99
3.11 其他push和pop指令  102
3.12 不透過彈出棧從堆疊中移除資料  102
3.13 不透過彈出堆疊存取壓入堆疊的資料  103
3.14 微軟ABI註釋  104
3.15 拓展閱讀資料  104
3.16 自測題  104
第4章 常數、變數與資料型態  106
4.1 imul指令  106
4.2 inc和dec指令  107
4.3 MASM常數聲明  107
4.3.1 常數表達式  109
4.3.2 this和$運算子  111
4.3.3 常數表達式求值  112
4.4 MASM typedef語句  112
4.5 型強制  113
4.6 指標資料型別  116
4.6.1 在組合語言中使用指標  117