汇编语言编程基础 基于LoongArch
全新正版 极速发货
¥
29.1
5.8折
¥
49.9
全新
库存6件
作者孙国云,敖琪,王锐
出版社人民邮电出版社
ISBN9787115595423
出版时间2023-01
装帧平装
开本16开
定价49.9元
货号1202790589
上书时间2024-06-04
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
孙国云
龙芯中科技术股份有限公司软件生态工程师。多年来从事 Linux系统开发、软件移植,以及消费类产品的软件方案设计和研发,在 Linux、移动操作系统开发、音视频编解码等领域有着丰富的经验,申请了多项技术专利。
敖琪
博士,毕业于中国科学院计算技术研究所。龙芯 Java 虚拟机团队负责人,龙芯中科技术股份有限公司工程师,中国科学技术大学硕士研究生实践导师。主要负责龙芯 JDK 相关工作,参与了龙芯平台OpenJDK 和 .NET Core 虚拟机的研发和产品化。申请专利十余项。
王锐
开源爱好者、开发者,十年以上的 Linux用户,Mozilla 社区的 JavaScript 虚拟机MIPS64 架构的管理员,2011 年加入龙芯中科技术股份有限公司,从事基础开源软件研发与生态建设工作。
目录
目 录
前言 xvii
01 汇编语言和龙芯架构简介
1.1 计算机语言002
1.1.1 机器语言002
1.1.2 汇编语言004
1.1.3 高级语言004
1.2 汇编语言的使用场景005
1.2.1 场景1--快速定位问题和分析问题005
1.2.2 场景2-性能分析和优化006
1.2.3 场景3-完成高级语言无法实现的功能007
1.3 龙芯系列处理器和龙芯架构介绍008
1.3.1 龙芯系列处理器008
1.3.2 龙芯自主指令系统009
1.4 龙芯汇编语言程序编写示例010
1.5 本章小结012
1.6 习题012
02 一窥LoongArch指令风貌
2.1 LoongArch指令特性014
2.1.1 指令组成和指令分类014
2.1.2 寄存器015
2.1.3 指令长度和编码格式016
2.1.4 指令汇编助记格式017
2.1.5 符号扩展018
2.1.6 寻址方式019
2.2 C语言到LoongArch的编译过程020
2.2.1 预处理和编译阶段022
2.2.2 机器指令生成阶段024
2.2.3 链接阶段025
2.3 本章小结026
2.4 习题026
03 LoongArch基础整数指令集
3.1 运算指令028
3.1.1 算术运算指令029
3.1.2 逻辑运算和条件赋值指令034
3.1.3 移位运算指令035
3.1.4 位操作指令037
3.2 访存指令040
3.2.1 普通访存指令040
3.2.2 边界检查访存指令043
3.2.3 栅障指令045
3.2.4 原子访存指令047
3.3 转移指令051
3.3.1 有条件的分支指令051
3.3.2 无条件分支指令和跳转指令052
3.3.3 跳转范围053
3.4 其他杂项指令054
3.4.1 系统调用指令054
3.4.2 断点例外指令055
3.4.3 读取恒定频率计时器信息指令055
3.4.4 读取CPU特性指令056
3.4.5 CRC指令056
3.4.6 地址边界检查指令057
3.5 特权等级和特权指令概述057
3.6 本章小结058
3.7 习题058
04 LoongArch基础浮点数指令集
4.1 浮点数存储方式和数值范围061
4.1.1 规格化的值061
4.1.2 非规格化的值061
4.1.3 正负无穷大或者NaN062
4.2 浮点寄存器062
4.2.1 浮点寄存器062
4.2.2 条件标志寄存器062
4.2.3 浮点控制状态寄存器063
4.3 浮点运算指令063
4.4 浮点访存指令065
4.4.1 浮点普通访存指令065
4.4.2 浮点边界检查访存指令066
4.5 浮点比较指令067
4.6 浮点分支指令068
4.7 浮点转换指令069
4.8 浮点搬运指令071
4.9 本章小结073
4.10 习题073
05 LoongArch ABI
5.1 数据类型、数据对齐和字节序列075
5.1.1 数据类型075
5.1.2 数据对齐076
5.1.3 字节序列077
5.2 LoongArch 寄存器使用约定077
5.2.1 通用寄存器使用约定077
5.2.2 浮点寄存器使用约定080
5.3 函数调用约定081
5.3.1 函数参数传递081
5.3.2 函数返回值传递087
5.4 函数栈布局088
5.5 系统调用约定089
5.6 本章小结093
5.7 习题093
06 LoongArch目标文件和进程虚拟空间
6.1 ELF文件格式解析095
6.1.1 ELF文件头096
6.1.2 可重定向文件中的段和段头表097
6.1.3 可执行文件中的段和程序头表100
6.1.4 符号和符号表102
6.1.5 重定位和重定位表105
6.2 进程虚拟地址空间和页大小108
6.3 可执行文件与进程虚拟地址空间的映射108
6.4 本章小结110
6.5 习题111
07 编写LoongArch汇编源程序
7.1 汇编源程序.s文件和.S文件113
7.2 汇编源文件中的汇编器指令113
7.2.1 符号定义相关的汇编器指令113
7.2.2 逻辑控制相关的汇编器指令117
7.3 汇编源文件中的汇编指令122
7.3.1 汇编指令122
7.3.2 汇编宏指令122
7.4 汇编源程序实例文件hello.S124
7.5 没有函数栈的汇编源程序125
7.6 本章小结126
7.7 习题126
08 内嵌汇编
8.1 内嵌汇编基本格式128
8.1.1 输入操作数和输出操作数129
8.1.2 破坏描述131
8.1.3 有名操作数134
8.2 约束字符135
8.3 限制符volatile136
8.4 脱离libc库的最“小”程序示例136
8.4.1 编写主程序136
8.4.2 链接脚本137
8.4.3 程序的运行139
8.5 本章小结139
8.6 习题139
09 调试汇编程序
9.1 GDB 调试器的常用命令142
9.1.1 GDB的启动和退出142
9.1.2 断点设置143
9.1.3 查看变量、内存数据和寄存器信息149
9.1.4 查看堆栈信息155
9.2 程序单步调试157
9.2.1 语句单步调试157
9.2.2 汇编指令的单步调试158
9.2.3 退出当前函数159
9.3 本章小结160
9.4 习题160
10 汇编程序性能优化
10.1 计算机体系架构的三类并行技术162
10.2 使用向量指令162
10.3 指令融合和地址对齐163
10.4 指令调度164
10.4.1 指令流水线和流水线冲突164
10.4.2 指令调度165
10.5 循环展开 167
10.6 性能分析工具perf168
10.6.1 perf stat的使用170
10.6.2 perf top的使用172
10.6.3 perf record/report的使用173
10.7 本章小结174
10.8 习题174
内容摘要
汇编语言是人和计算机沟通的最直接的方式,它描述了机器最终所要执行的指令序列。汇编语言和机器语言一样都是和计算机体系架构强绑定的低级语言。本书是龙芯自主指令集的首本汇编语言教程,系统讲解龙芯处理器全新的自主指令系统架构LoongArch。
本书循序渐进地介绍基于LoongArch的汇编语言知识,包括计算机语言、使用汇编语言的场景等基础知识,寄存器、指令集、函数调用等汇编语言的核心内容,以及编写程序示例和常用的调试手段。本书并不是逐条地讲解每一条指令的功能,而是通过关键指令的拆解来介绍计算机工作的基本原理,同时恰当地指出LoongArch的特殊之处,便于读者理解、实践、应用LoongArch。
本书非常适合基于龙芯架构的工程技术人员学习参考,也可作为从事计算机体系结构或计算机系统设计的工程技术人员的参考书,还可用作大学计算机专业的延伸阅读资料。本书的读者应具备以下基础:具有计算机的使用经验,具有计算机基础知识,具有一门高级语言(C、Java、Python等)的基本编程基础知识。
主编推荐
1.龙芯专业开发人员编写。
2. 一窥LoongArch指令集特点,围绕如何使用龙芯汇编语言编写程序展开讲解,
3.可参考示例多,快速入门龙芯汇编语言。
4.工程性强,扩展介绍部分处理器体系结构、程序编译过程、程序调试工具等相关知识。
— 没有更多了 —
以下为对购买帮助不大的评价