3dwoo大學簡體電腦書店
匯編語言(基于64位ARMv8體系結構)
( 簡體 字)
作者:錢曉捷類別:1. -> 電腦組織與體系結構 -> 嵌入式系統 -> Cortex
   2. -> 程式設計 -> 組合語言/編譯原理 -> 組合語言程式設計
出版社:電子工業出版社匯編語言(基于64位ARMv8體系結構) 3dWoo書號: 56100
詢問書籍請說出此書號!
有庫存
NT售價: 300
出版日:9/1/2022
頁數:244
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787121443718 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
第1章 匯編語言基礎 1
1.1 計算機系統概述 1
1.1.1 計算機硬件組成 1
1.1.2 處理器的發展 3
1.1.3 ARM處理器 6
1.2 64位ARMv8編程結構 9
1.2.1 ARMv8結構基礎 9
1.2.2 ARMv8寄存器 11
1.2.3 ARMv8存儲器模型 15
1.3 64位ARM匯編語言 17
1.3.1 ARM指令集 18
1.3.2 匯編語言程序 21
1.3.3 匯編語言開發 28
習題1 32
第2章 整型數據處理 36
2.1 數據傳送 36
2.1.1 寄存器傳送指令 36
2.1.2 立即數傳送指令 37
2.2 加減運算 39
2.2.1 加減指令 39
2.2.2 帶進位的加減指令 42
2.2.3 設置標志的加減指令 42
2.3 乘除運算 44
2.3.1 乘法指令 44
2.3.2 除法指令 45
2.3.3 乘加和乘減指令 46
2.4 位操作 46
2.4.1 邏輯運算指令 46
2.4.2 移位指令 49
2.4.3 位段操作指令 50
2.5 存儲器訪問 53
2.5.1 存儲器尋址方式 53
2.5.2 載入和存儲指令 56
2.5.3 成對載入和存儲指令 58
2.5.4 地址生成指令 60
習題2 64
第3章 分支和循環程序 69
3.1 分支指令 69
3.1.1 無條件分支 69
3.1.2 條件分支 70
3.1.3 條件選擇 72
3.1.4 條件比較 74
3.2 分支程序 74
3.2.1 單分支結構 74
3.2.2 雙分支結構 77
3.2.3 多分支結構 79
3.3 循環程序 81
3.3.1 計數控制循環 82
3.3.2 條件控制循環 84
3.3.3 多重循環 88
習題3 90
第4章 模塊化程序設計 94
4.1 子程序及其調用 94
4.1.1 調用與返回指令 94
4.1.2 調用規范 96
4.1.3 模塊化方法 109
4.2 與C語言的混合編程 115
4.2.1 模塊連接 115
4.2.2 嵌入匯編 116
4.3 Linux系統功能調用 118
4.3.1 調用方法 119
4.3.2 調用示例 120
4.4 A64系統類指令 122
4.4.1 A64系統控制指令 123
4.4.2 A64特殊存儲器訪問指令 125
習題4 128
第5章 浮點數據處理 131
5.1 浮點數據類型 131
5.1.1 IEEE浮點數據格式 131
5.1.2 ARMv8浮點數據格式 136
5.1.3 浮點寄存器 138
5.2 浮點數據的存儲器訪問 140
5.3 浮點數據的傳送和轉換 142
5.3.1 浮點傳送指令 142
5.3.2 浮點格式轉換指令 145
5.4 浮點數據的運算和比較 149
5.4.1 浮點算術運算指令 149
5.4.2 浮點比較和條件選擇指令 152
習題5 158
第6章 SIMD數據處理 162
6.1 ARMv8的SIMD數據類型 162
6.1.1 向量數據和向量寄存器 162
6.1.2 SIMD數據操作 164
6.2 SIMD數據的存儲器訪問 166
6.2.1 存儲器的尋址方式 166
6.2.2 向量元素的訪問方式 167
6.3 SIMD數據的傳送和轉換 171
6.3.1 SIMD數據傳送指令 171
6.3.2 SIMD數據格式轉換指令 174
6.4 SIMD數據的運算和比較 176
6.4.1 SIMD整數運算指令 176
6.4.2 SIMD浮點運算指令 181
6.4.3 SIMD比較及條件設置指令 184
6.5 SIMD數據的特色處理 186
6.5.1 SIMD變體指令 186
6.5.2 SIMD專用指令 199
6.6 SIMD指令的編程應用 203
習題6 205
附錄A 調試程序GDB 210
A.1 常規操作 210
A.2 調試示例 215
A.3 常用命令 224
附錄B A64指令集 226
B.1 A64基礎指令集 226
B.2 A64先進SIMD指令集 229
附錄C AS匯編程序主要指示符 234
參考文獻 235
本書基于ARMv8體系結構、在Linux平臺使用GCC編譯套件,介紹64位ARM指令集和匯編語言,內容包括匯編語言基礎知識,AArch64編程結構,整數處理、存儲器訪問、分支和調用基礎指令,匯編語言分支、循環和子程序結構,以及浮點數據處理指令、SIMD向量數據處理指令等。本書主要面向高等學校計算機、電子、通信及自動控制等信息技術類專業學生,可以作為“匯編語言”或“計算機系統原理”等課程的教材或參考書,也適合ARMv8體系結構的專業技術人員、應用開發人員,以及希望學習64位ARMv8體系結構的普通讀者和培訓班學員。
在各種計算機編程語言中,匯編語言是直接使用處理器指令集的低層語言,可以從軟件角度讓用戶更好地掌握處理器體系結構和工作原理,更深入地理解高級語言、編譯程序、操作系統以及計算機科學的有關重要概念,也有助于編寫與硬件相關、簡潔高效的代碼。在國內外高等學校計算機及相關專業中,匯編語言知識都是必修內容。
本書基于ARMv8體系結構的處理器核心硬件,在Linux操作系統平臺、使用GCC編譯套件(包括編譯程序GCC、匯編程序AS、連接程序LD、調試程序GDB等開發軟件),詳細講解64位ARM體系結構(AArch64)的A64指令集及其64位匯編語言編程。
主要內容一覽表
目 錄 主要內容
第1章 匯編語言基礎 在了解計算機硬件組成的基礎上,熟悉通用處理器和ARM處理器的發展;重點展開64位ARMv8體系結構(AArch64)通用寄存器、存儲器模型、A64指令集等編程結構;通過C語言信息顯示程序詳述匯編語言的語句格式、程序結構、開發過程和操作方法
第2章 整型數據處理 描述A64基礎指令集的整數處理和存儲器訪問指令,包括數據傳送、算術運算、邏輯運算、位段操作等指令,以及存儲器尋址方式、地址生成指令、載入和存儲指令;結合指令舉例、程序片段(和調試程序),熟悉各指令的格式、功能和應用
第3章 分支和循環程序 首先解釋A64分支指令的功能,然后以分支和循環程序結構為主線,介紹匯編語言如何實現單分支、雙分支、多分支和計數控制循環、條件控制循環、多重循環程序結構,并對比C語言相關語句,包括舉例字母大小寫判斷、閏年判斷、地址表、求最大最小值、向量點積、字符個數統計、裴波那契數列、最大公約數、矩陣相乘程序的編寫
第4章 模塊化程序設計 講解A64的子程序調用指令和匯編語言子程序編寫、調用規范,說明宏、源文件包含、模塊連接、靜態庫和共享庫的模塊化編程方法,論述匯編語言與C語言的模塊連接和嵌入匯編的混合編程,介紹匯編語言調用Linux系統功能的方法,最后簡介A64系統類指令
第5章 浮點數據處理 在熟悉IEEE浮點數據格式的基礎上,了解ARMv8浮點數據格式和浮點寄存器;配合示例程序,詳述A64浮點數據處理指令,包括浮點數據的存儲器訪問、浮點數據的傳送和格式轉換、浮點數據的加減乘除基本運算和求平方根等復合運算、浮點數據的比較和條件選擇等指令
第6章 SIMD數據處理 在介紹SIMD數據類型和向量操作的基礎上,配合示例程序,講述A64先進SIMD數據處理指令,包括SIMD數據的存儲器訪問、SIMD數據的傳送和格式轉換、SIMD整數運算和SIMD浮點運算、SIMD數據比較,以及眾多的變體和專用特色指令
附錄 介紹調試程序GDB的通用操作過程,提供若干匯編語言程序的調試示例、列表GDB常用命令,分類羅列A64的基礎指令和SIMD指令,匯總匯編程序AS的主要指示符

在Windows操作系統與Intel 80x86體系結構的教學大環境中,國內高校相關專業多基于Intel 80x86處理器講授匯編語言。Intel 80x86體系結構作為復雜指令集計算機CISC的典型代表,教學內容以16位或32位通用整數指令系統為主,比較成熟;但較少涉及較復雜的浮點指令和SIMD指令,略顯陳舊。另一方面,作為精簡指令集計算機RISC的ARM體系結構和匯編語言主要在嵌入式系統及其應用等課程中有所涉及,并沒有作為教學重點,國內也只有屈指可數的專門介紹32位ARM指令系統和匯編語言的教材。因此,本書是國內較為全面詳解64位ARMv8體系結構的指令集和匯編語言教材,包括基礎的整數處理指令、復雜的浮點數據處理指令和先進的SIMD向量數據處理指令。
ARM公司提供在線或電子版的產品手冊、用戶手冊、編程指南等第一手資料,盡管內容翔實,是必不可少的參考文獻;但沒有基礎的初學者難免會感到有些繁雜和凌亂,一頭霧水。因此,本書結合國內高校教學實際情況、從學習者角度,將相關文檔資料合理組織,補充相關基礎知識,以清晰的邏輯結構展開教學內容。秉持一貫的寫作風格,本書努力做到通俗易懂、圖文并茂、由淺入深、循序漸進、內容銜接、前后對照;同時,注重匯編語言的編程實踐,不僅說明開發軟件的使用、調試程序GDB的通用操作,詳述驗證通過的示例程序,還提供包含編程練習的大量習題讓讀者鞏固所學,特別是展示GCC編譯C語言程序生成的匯編語言代碼,通過閱讀、對比和分析,讓指令集下達體系結構、上抵高級語言,讓讀者既理解底層計算機系統工作原理,又了解高層編程語言的實質結構,讓匯編語言的學習更自然、更實用。
本書作為64位ARM體系結構、指令集、匯編語言的入門性質教材,從基本概念和原理出發,對讀者沒有太多的先修知識要求。不過,了解計算機系統原理有助于體系結構的理解,具備一門高級語言(C語言)的編程經歷有利于匯編語言編程的掌握,熟悉Linux操作系統則使得開發過程更加快捷順暢。但是,編程實踐需要搭建基于64位ARMv8體系結構的開發環境,如使用華為、Amazon等公司生產的物理服務器或提供的云服務器。本書使用華為鯤鵬云服務器提供的輕量級網絡集成開發環境(CloudIDE)實踐了本書的程序,還使用樹莓派400開發板(配置64位Ubuntu桌面版操作系統)進行了程序驗證。
本書由鄭州大學錢曉捷編寫,得到同事穆玲玲等老師的幫助。特別感謝華為公司提供的資料和支持,希望能為教育部—華為“智能基座”貢獻綿薄之力。
限于水平,本書難免會有疏漏和不當之處,敬請讀者指正。
作 者
pagetop