教育>本科研究生>计算机类
汇编语言(基于64位ARMv8体系结构)  

汇编语言(基于64位ARMv8体系结构)  "

作者:钱晓捷
ISBN:9787121443718
定价:¥59.8
字数:390千字
页数:244
出版时间:2022-09
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书基于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桌面版操作系统)进行了程序验证。 本书由郑州大学钱晓捷编写,得到同事穆玲玲等老师的帮助。特别感谢华为公司提供的资料和支持,希望能为教育部—华为“智能基座”贡献绵薄之力。 限于水平,本书难免会有疏漏和不当之处,敬请读者指正(iexjqian@zzu.edu.cn)。 作 者

目录

目 录 第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

作者简介

编辑推荐

作者寄语

电子资料

http://www.hxedu.com.cn/hxedu/fg/book/bookinfo.html?code=G0443710

www.luweidong.cn

下一个