http://www.china-pub.com/28024
美河上能下到
目錄前言
第一部分 組合語言程式設計環境基礎
第1章 什麼是組合語言
1.1 處理器指令
1.1.1 指令碼處理
1.1.2 指令碼格式
1.2 進階語言
1.2.1 進階語言的種類
1.2.2 進階語言的特性
1.3 組合語言
1.3.1 作業碼助記符
1.3.2 定義資料
1.3.3 命令
1.4 小結
第2章 ia-32平台
2.1 ia-32處理器的核心部分
2.1.1 控制單元
2.1.2 執行單元
2.1.3 寄存器
2.1.4 標誌 .2.2 ia-32的進階特性
2.2.1 x87浮點單位
2.2.2 多媒體擴充
2.2.3 流化simd擴充
2.2.4 超執行緒
2.3 ia-32處理器系列
2.3.1 intel處理器
2.3.2 非intel處理器
2.4 小結
第3章 相關的工具
3.1 開發工具
3.1.1 彙編器
3.1.2 連接器
3.1.3 調試器
3.1.4 編譯器
3.1.5 目標代碼反組譯碼器
3.1.6 簡檔器
3.2 gnu彙編器
3.2.1 安裝彙編器
3.2.2 使用彙編器
3.2.3 關於作業碼文法
3.3 gnu連接器
3.4 gnu編譯器
3.4.1 下載和安裝gcc
3.4.2 使用gcc
3.5 gnu調試器程式
3.5.1 下載和安裝gdb
3.5.2 使用gdb
3.6 kde調試器
3.6.1 下載和安裝kdbg
3.6.2 使用kdbg
3.7 gnu objdump程式
3.7.1使用objdump
3.7.2 objdump範例
3.8 gnu簡檔器程式’
3.8.1 使用簡檔器
3.8.2 簡檔範例
3.9 完整的彙編開發系統
3.9.1 linux基礎
3.9.2 下載和運行mepis
3.9.3 新的開發系統
3.10 小結
第4章 組合語言程式範例
4.1 程式的組成
4.1.1 定義段
4.1.2 定義起始點
4.2 建立簡單程式
4.2.1 cpuid指令
4.2.2 範常式序
4.2.3 構建可執行程式
4.2.4 運行可執行程式
4.2.5 使用編譯器進行彙編
4.3 偵錯工具
4.4 在組合語言中使用c庫函數
4.4.1 使用printf
4.4.2 串連c庫函數
4.5 小結
第二部分 組合語言程式設計基礎
第5章 傳送資料
5.1 定義資料元素
5.1.1 資料區段
5.1.2 定義靜態符號
5.1.3 bss段
5.2 傳送資料元素
5.2.1 mov指令格式
5.2.2 把立即數傳送到寄存器和記憶體
5.2.3 在寄存器之間傳送資料
5.2.4 在記憶體和寄存器之間傳送資料
5.3 條件傳送指令
5.3.1 cmov指令
5.3.2 使用cmov指令
5.4 交換資料
5.4.1 資料交換指令
5.4.2 使用資料交換指令
5.5 堆棧
5.5.1 堆棧如何工作
5.5.2 壓入和彈出資料
5.5.3 壓入和彈出所有寄存器
5.5.4 手動使用esp和ebp寄存器
5.6 最佳化記憶體訪問
5.7 小結
第6章 控制執行流程
6.1 指令指標
6.2 無條件分支
6.2.1 跳轉
6.2.2 調用
6.2.3 中斷
6.3 條件分支
6.3.1 條件跳轉指令
6.3.2 比較指令
6.3.3 使用標誌位的範例
6.4 迴圈
6.4.1 迴圈指令
6.4.2 迴圈範例
6.4.3 防止loop災難
6.5 模仿進階條件分支
6.5.1 if語句
6.5.2 for迴圈
6.6 最佳化分支指令
6.6.1 分支預測
6.6.2 最佳化技巧
6.7 小結
第7章 使用數字
7.1 數字資料類型
7.2 整數
7.2.1 標準整數長度
7.2.2 不帶正負號的整數
7.2.3 帶正負號的整數
7.2.4 使用帶正負號的整數
7.2.5 擴充整數
7.2.6 在gnu彙編器中定義整數
7.3 simd整數
7.3.1 mmx整數
7.3.2 傳送mmx整數
7.3.3 sse整數
7.3.4 傳送sse整數
7.4 二進位編碼的十進位
7.4.1 bcd是什麼
7.4.2 fpubcd值
7.4.3 傳送bcd值
7.5 浮點數
7.5.1 浮點數是什麼
7.5.2 標準浮點數據類型
7.5.3 ia-32浮點值
7.5.4 在gnu彙編器中定義浮點值
7.5.5 傳送浮點值
7.5.6 使用預置的浮點值
7.5.7 sse浮點數據類型
7.5.8 傳送sse浮點值
7.6 轉換
7.6.1 轉換指令
7.6.2 轉換範例
7.7 小結
第8章 基本數學功能
8.1 整數運算
8.1.1 加法
8.1.2 減法
8.1.3 遞增和遞減
8.1.4 乘法
8.1.5 除法
8.2 移位指令
8.2.1 移位乘法
8.2.2 移位除法
8.2.3 迴圈移位
8.3 十進位運算
8.3.1 不打包bcd的運算
8.3.2 打包bcd的運算
8.4 邏輯操作
8.4.1 布爾邏輯
8.4.2 位測試
8.5 小結
第9章 進階數學功能
9.1 fpu環境
9.1.1 fpu寄存器堆棧
9.1.2 fpu狀態、控制和標記寄存器
9.1.3 使用fpu堆棧
9.2 基本浮點運算
9.3 進階浮點運算
9.3.1 浮點功能
9.3.2 部分餘數
9.3.3 三角函數
9.3.4 對數函數
9.4 浮點條件分支
9.4.1 fcom指令系列
9.4.2 fcomi指令系列
9.4.3 fcmov指令系列
9.5 儲存和恢複fpu狀態
9.5.1 儲存和恢複fpu環境
9.5.2 儲存和恢複fpu狀態
9.6 等待和非等待指令
9.7 最佳化浮點運算
9.8 小結
第10章 處理字串
10.1 傳送字串
10.1.1 movs指令
10.1.2 rep首碼
10.1.3 其他rep指令
10.2 儲存和載入字串
10.2.1 lods指令
10.2.2 stos指令
10.2.3 構建自己的字串函數
10.3 比較字串
10.3.1 cmps指令
10.3.2 cmps和rep一起使用
10.3.3 字串不等
10.4 掃描字串
10.4.1 scas指令
10.4.2 搜尋多個字元
10.4.3 計算字串長度
10.5 小結
第11章 使用函數
11.1 定義函數
11.2 彙編函數
11.2.1 編寫函數
11.2.2 訪問函數
11.2.3 函數的放置
11.2.4 使用寄存器
11.2.5 使用全域資料
11.3 按照c樣式傳遞資料值
11.3.1 回顧堆棧
11.3.2 在堆棧之中傳遞函數參數
11.3.3 函數開頭和結尾
11.3.4 定義局部函數資料
11.3.5 清空堆棧
11.3.6 範例
11.3.7 在操作之中監視堆棧
11.4 使用獨立的函數檔案
11.4.1 建立獨立的函數檔案
11.4.2 建立可執行檔
11.4.3 調試獨立的函數檔案
11.5 使用命令列參數
11.5.1 程式剖析
11.5.2 分析堆棧
11.5.3 查看命令列參數
11.5.4 查看環境變數
11.5.5 使用命令列參數的範例
11.6 小結
第12章 使用linux系統調用
12.1 linux核心
12.1.1 核心組成
12.1.2 linux核心版本
12.2 系統調用
12.2.1 尋找系統調用
12.2.2 尋找系統調用定義
12.2.3 常用系統調用
12.3 使用系統調用
12.4 複雜的系統調用傳回值
12.4.1 sysinfo系統調用
12.4.2 使用返回結構
12.4.3 查看結果
12.5 跟蹤系統調用
12.5.1 strace程式
12.5.2 進階strace參數
12.5.3 監視程式系統調用
12.5.4 附加到正在啟動並執行程式
12.6 系統調用和c庫
12.6.1 c庫
12.6.2 跟蹤c函數
12.6.3 系統調用和c庫的比較
12.7小結
第三部分 進階組合語言技術
第13章 使用內聯彙編
13.1 什麼是內聯彙編
13.2 基本的內聯彙編代碼
13.2.1 asm格式
13.2.2 使用全域c變數
13.2.3 使用volatile修飾符
13.2.4 使用替換的關鍵字
13.3 擴充asm
13.3.1 擴充asm格式
13.3.2 指定輸入值和輸出值
13.3.3 使用寄存器
13.3.4 使用預留位置
13.3.5 引用預留位置
13.3.6 替換的預留位置
13.3.7 改動的寄存器列表
13.3.8 使用記憶體位置
13.3.9 使用浮點值
13.3.10 處理跳轉
13.4 使用內聯彙編代碼
13.4.1 什麼是宏
13.4.2 c宏函數
13.4.3 建立內聯彙編宏函數
13.5 小結
笫14章 調用彙編庫
14.1 建立彙編函數
14.2 編譯c和組譯工具
14.2.1 編譯彙編原始碼檔案
14.2.2 使用彙編目標代碼檔案
14.2.3 可執行檔
14.3 在c程式中使用彙編函數
14.3.1 使用整數傳回值
14.3.2 使用字串傳回值
14.3.3 使用浮點傳回值
14.3.4 使用多個輸入值
14.3.5 使用混合資料類型的輸入值
14.4 在c++程式中使用彙編函數
14.5 建立靜態庫
14.5.1 什麼是靜態庫
14.5.2 ar命令
14.5.3 建立靜態庫檔案
14.5.4 編譯靜態庫
14.6 使用共用庫
14.6.1 什麼是共用庫
14.6.2 建立共用庫
14.6.3 編譯共用庫
14.6.4 運行使用共用庫的程式
14.7 調試彙編函數
14.7.1 調試c程式
14.7.2 調試彙編函數
14.8 小結
第15章 最佳化常式
15.1 最佳化編譯器代碼
15.1.1 編譯器最佳化層級1
15.1.2 編譯器最佳化層級2
15.1.3 編譯器最佳化層級3
15.2 建立最佳化的代碼
15.2.1 產生組合語言代碼
15.2.2 查看最佳化的代碼
15.2.3 重新編譯最佳化的代碼
15.3 最佳化技巧
15.3.1 最佳化運算
15.3.2 最佳化變數
15.3.3 最佳化迴圈
15.3.4 最佳化條件分支
15.3.5 通用子運算式消除
15.4 小結
第16章 使用檔案
16.1 檔案處理順序
16.2 開啟和關閉檔案
16.2.1 訪問類型
16.2.2 unix許可權
16.2.3 開啟檔案代碼
16.2.4 開啟錯誤傳回碼
16.2.5 關閉檔案
16.3 寫入檔案
16.3.1 簡單的寫入範例
16.3.2 改變檔案訪問模式
16.3.3 處理檔案錯誤
16.4 讀取檔案
16.4.1 簡單的讀取範例
16.4.2 更加複雜的讀取範例
16.5 讀取、處理和寫入資料
16.6 記憶體對應檔
16.6.1 什麼是記憶體對應檔
16.6.2 mmap系統調用
16.6.3 mmap組合語言格式
16.6.4 mmap範例
16.7 小結
第17章 使用進階ia-32特性
17.1 simd簡介
17.1.1 mmx
17.1.2 sse
17.1.3 sse2
17.2 檢測支援的simd操作
17.2.1 檢測支援
17.2.2 simd特性程式
17.3 使用mmx指令
17.3.1 載入和獲得打包的整數值
17.3.2 執行mmx操作
17.4 使用sse指令
17.4.1 傳送資料
17.4.2 處理資料
17.5 使用sse2指令
17.5.1 傳送資料
17.5.2 處理資料
17.6 sse3指令
17.7 小結