由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
正版 汇编语言编程基础:基于LoongArch 孙国云 敖琪 王锐 人民邮
¥ ×1
目 录 前言 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 正负无穷大或者NaN 062 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.S 124 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 符volatile 136 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 性能分析工具perf 168 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
孙国云 龙芯中科技术股份有限公司软件生态工程师。多年来从事 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 正负无穷大或者NaN 062 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 LoongArc件和进程虚拟空间 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.S 124 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 限制符volatile 136 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.出当前函数 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 能分析工具perf 168 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
1.龙芯专业开发人员编写。 2. 一窥LoongArch指令集特点,围绕如何使用龙芯汇编语言编写程序展开讲解, 3.可参考示例多,快速入门龙芯汇编语言。 4.工程强,扩展介绍部分处理器体系结构、程序编译过程、程序调试工具等相关知识。
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格