學習linux環境下彙編的好書《組合語言程式設計》
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 小結