資源簡介
每種高級語言程序在連接為可執(zhí)行程序之前,都必須被編譯為匯編語言程序,因此對于高級語言程序設(shè)計者來說,了解編譯器如何生成匯編語言代碼十分有用。
本書分為三部分。第一部分講解匯編語言程序設(shè)計環(huán)境基礎(chǔ),第二部分研究匯編語言程序設(shè)計,最后一部分講解高級匯編語言技術(shù)。本書的主要目的是向使用高級語言的程序員講解編譯器如何從C和C++程序創(chuàng)建匯編語言例程,以及編程人員應(yīng)如何掌握生成的匯編語言代碼,調(diào)整匯編語言例程以提高應(yīng)用程序的性能。
本書適合有一定編程經(jīng)驗的開發(fā)人員參考。
本書主要內(nèi)容:
● 查看高級語言程序生成的匯編語言代碼的好處;
● 如何為Linux奔騰處理器環(huán)境創(chuàng)建獨立的匯編語言程序;
● 如何將高級函數(shù)和庫整合到匯編語言程序中;
● 如何將匯編語言例程整合到C和C++應(yīng)用程序中;
● 如何在匯編語言程序中使用Linux系統(tǒng)調(diào)用;
● 如何在應(yīng)用程序中使用奔騰處理器的MMX和SSE功能。
第一部分 匯編語言程序設(shè)計環(huán)境基礎(chǔ) 1
第1章 什么是匯編語言 1
1.1 處理器指令 1
1.1.1 指令碼處理 1
1.1.2 指令碼格式 2
1.2 高級語言 5
1.2.1 高級語言的種類 5
1.2.2 高級語言的特性 7
1.3 匯編語言 8
1.3.1 操作碼助記符 8
1.3.2 定義數(shù)據(jù) 9
1.3.3 命令 11
1.4 小結(jié) 11
第2章 IA-32平臺 13
2.1 IA-32處理器的核心部分 13
2.1.1 控制單元 14
2.1.2 執(zhí)行單元 18
2.1.3 寄存器 19
2.1.4 標(biāo)志 21
2.2 IA-32的高級特性 23
2.2.1 x87浮點單元 23
2.2.2 多媒體擴展 24
2.2.3 流化SIMD擴展 24
2.2.4 超線程 25
2.3 IA-32處理器系列 25
2.3.1 Intel處理器 25
2.3.2 非Intel處理器 26
2.4 小結(jié) 27
第3章 相關(guān)的工具 29
3.1 開發(fā)工具 29
3.1.1 匯編器 29
3.1.2 連接器 31
3.1.3 調(diào)試器 31
3.1.4 編譯器 32
3.1.5 目標(biāo)代碼反匯編器 32
3.1.6 簡檔器 33
3.2 GNU匯編器 33
3.2.1 安裝匯編器 33
3.2.2 使用匯編器 35
3.2.3 關(guān)于操作碼語法 36
3.3 GNU連接器 37
3.4 GNU編譯器 39
3.4.1 下載和安裝gcc 39
3.4.2 使用gcc 40
3.5 GNU調(diào)試器程序 42
3.5.1 下載和安裝gdb 42
3.5.2 使用gdb 42
3.6 KDE調(diào)試器 44
3.6.1 下載和安裝kdbg 44
3.6.2 使用kdbg 45
3.7 GNU objdump程序 46
3.7.1 使用objdump 46
3.7.2 objdump范例 47
3.8 GNU簡檔器程序 48
3.8.1 使用簡檔器 48
3.8.2 簡檔范例 50
3.9 完整的匯編開發(fā)系統(tǒng) 51
3.9.1 Linux基礎(chǔ) 51
3.9.2 下載和運行MEPIS 52
3.9.3 新的開發(fā)系統(tǒng) 53
3.10 小結(jié) 53
第4章 匯編語言程序范例 55
4.1 程序的組成 55
4.1.1 定義段 55
4.1.2 定義起始點 55
4.2 創(chuàng)建簡單程序 56
4.2.1 CPUID指令 56
4.2.2 范例程序 58
4.2.3 構(gòu)建可執(zhí)行程序 60
4.2.4 運行可執(zhí)行程序 60
4.2.5 使用編譯器進行匯編 60
4.3 調(diào)試程序 61
4.4 在匯編語言中使用C庫函數(shù) 65
4.4.1 使用printf 66
4.4.2 連接C庫函數(shù) 67
4.5 小結(jié) 68
第二部分 匯編語言程序設(shè)計基礎(chǔ) 71
第5章 傳送數(shù)據(jù) 71
5.1 定義數(shù)據(jù)元素 71
5.1.1 數(shù)據(jù)段 71
5.1.2 定義靜態(tài)符號 73
5.1.3 bss段 73
5.2 傳送數(shù)據(jù)元素 75
5.2.1 MOV指令格式 75
5.2.2 把立即數(shù)傳送到寄存器和內(nèi)存 76
5.2.3 在寄存器之間傳送數(shù)據(jù) 77
5.2.4 在內(nèi)存和寄存器之間傳送數(shù)據(jù) 77
5.3 條件傳送指令 83
5.3.1 CMOV指令 83
5.3.2 使用CMOV指令 85
5.4 交換數(shù)據(jù) 86
5.4.1 數(shù)據(jù)交換指令 87
5.4.2 使用數(shù)據(jù)交換指令 91
5.5 堆棧 93
5.5.1
代碼片段和文件信息
評論
共有 條評論