Logo 汇编语言编程基础 基于LoongArch
v1.1.0
  • 1. 内容提要
    • 1.1. 前言
  • 2. 汇编语言与龙架构简介
    • 2.1. 计算机语言
      • 2.1.1. 机器语言
      • 2.1.2. 汇编语言
      • 2.1.3. 高级语言
    • 2.2. 汇编语言的使用场景
      • 2.2.1. 场景1——快速定位问题和分析问题
      • 2.2.2. 场景2——性能分析和优化
      • 2.2.3. 场景3——完成高级语言无法实现的功能
    • 2.3. 龙芯系列处理器和龙芯架构介绍
      • 2.3.1. 龙芯系列处理器
      • 2.3.2. 龙芯自主指令系统
    • 2.4. 龙芯汇编语言程序编写示例
    • 2.5. 本章小结
    • 2.6. 习题
  • 3. 一窥LoongArch指令风貌
    • 3.1. LoongArch指令特性
      • 3.1.1. 指令组成和指令分类
      • 3.1.2. 寄存器
      • 3.1.3. 指令长度和编码格式
      • 3.1.4. 指令汇编助记格式
      • 3.1.5. 符号扩展
      • 3.1.6. 寻址方式
    • 3.2. C语言到LoongArch的编译过程
      • 3.2.1. 预处理和编译阶段
      • 3.2.2. 机器指令生成阶段
      • 3.2.3. 链接阶段
    • 3.3. 本章小结
    • 3.4. 习题
  • 4. LoongArch基础整数指令集
    • 4.1. 运算指令
      • 4.1.1. 算术运算指令
      • 4.1.2. 逻辑运算和条件赋值指令
      • 4.1.3. 移位运算指令
      • 4.1.4. 位操作指令
    • 4.2. 访存指令
      • 4.2.1. 普通访存指令
      • 4.2.2. 边界检查访存指令
      • 4.2.3. 栅障指令
      • 4.2.4. 原子访存指令
    • 4.3. 转移指令
      • 4.3.1. 有条件的分支指令
      • 4.3.2. 无条件分支指令和跳转指令
      • 4.3.3. 跳转范围
    • 4.4. 其他杂项指令
      • 4.4.1. 系统调用指令
      • 4.4.2. 断点例外指令
      • 4.4.3. 读取恒定频率计时器信息指令
      • 4.4.4. 读取CPU特性指令
      • 4.4.5. CRC指令
      • 4.4.6. 地址边界检查指令
    • 4.5. 特权等级和特权指令概述
    • 4.6. 本章小结
    • 4.7. 习题
  • 5. LoongArch基础浮点数指令集
    • 5.1. 浮点数存储方式和数值范围
      • 5.1.1. 规格化的值
      • 5.1.2. 非规格化的值
      • 5.1.3. 正负无穷大或NaN
    • 5.2. 浮点寄存器
      • 5.2.1. 浮点寄存器
        • 5.2.1.1. 条件标志寄存器
        • 5.2.1.2. 浮点控制状态寄存器
    • 5.3. 浮点运算指令
    • 5.4. 浮点访存指令
      • 5.4.1. 浮点普通访存指令
      • 5.4.2. 浮点边界检查访存指令
    • 5.5. 浮点比较指令
    • 5.6. 浮点分支指令
    • 5.7. 浮点转换指令
    • 5.8. 浮点搬运指令
    • 5.9. 本章小结
    • 5.10. 习题
  • 6. LoongArch ABI
    • 6.1. 数据类型、数据对齐和字节序列
      • 6.1.1. 数据类型
      • 6.1.2. 数据对齐
      • 6.1.3. 字节序列
    • 6.2. LoongArch寄存器使用约定
      • 6.2.1. 通用寄存器使用约定
      • 6.2.2. 浮点寄存器使用约定
    • 6.3. 函数调用约定
      • 6.3.1. 函数参数传递
      • 6.3.2. 函数返回值传递
    • 6.4. 函数栈布局
    • 6.5. 系统调用约定
    • 6.6. 本章小结
    • 6.7. 习题
  • 7. LoongArch目标文件和进程虚拟空间
    • 7.1. ELF文件格式解析
      • 7.1.1. ELF文件头
      • 7.1.2. 可重定位文件中的段和段头表
      • 7.1.3. 可执行文件中的段和程序头表
      • 7.1.4. 符号和符号表
      • 7.1.5. 重定位和重定位表
    • 7.2. 操作系统加载ELF文件
      • 7.2.1. 系统调用入口
      • 7.2.2. 内核空间加载与分析
      • 7.2.3. 用户态的动态链接器 (ld.so)
      • 7.2.4. 程序入口与最终启动
    • 7.3. 进程虚拟地址空间和页大小
    • 7.4. 可执行文件与进程虚拟地址空间的映射
    • 7.5. 本章小结
    • 7.6. 习题
  • 8. 编写LoongArch汇编源程序
    • 8.1. 汇编源程序 .s 文件和 .S 文件
    • 8.2. 汇编源文件中的汇编器指令
      • 8.2.1. 符号定义相关的汇编器指令
      • 8.2.2. 逻辑控制相关的汇编器指令
    • 8.3. 汇编源文件中的汇编指令
      • 8.3.1. 汇编指令
      • 8.3.2. 汇编宏指令
    • 8.4. 汇编源程序实例文件 hello.S
    • 8.5. 没有函数栈的汇编源程序
    • 8.6. 本章小结
    • 8.7. 习题
  • 9. 内嵌汇编
    • 9.1. 内嵌汇编基本格式
      • 9.1.1. 输入操作数和输出操作数
      • 9.1.2. 破坏描述
      • 9.1.3. 有名操作数
    • 9.2. 约束字符
    • 9.3. 限制符volatile
    • 9.4. 脱离 libc 库的最小程序示例
      • 9.4.1. 编写主程序
      • 9.4.2. 链接脚本
      • 9.4.3. 程序的运行
    • 9.5. 本章小结
    • 9.6. 习题
  • 10. 龙架构伪汇编指令
    • 10.1. 立即数加载
      • 10.1.1. li 伪指令
        • 10.1.1.1. 指令详解
    • 10.2. 算术指令
      • 10.2.1. move 伪指令
      • 10.2.2. ud 伪指令
      • 10.2.3. nop 伪指令
    • 10.3. 位置无关代码
      • 10.3.1. la 伪指令
        • 10.3.1.1. 指令详解
    • 10.4. 函数返回与跳转
      • 10.4.1. call 伪指令
      • 10.4.2. ret 伪指令
      • 10.4.3. jr 伪指令
      • 10.4.4. 条件分支伪指令
  • 11. 调试汇编程序
    • 11.1. GDB 调试器的常用命令
      • 11.1.1. GDB 的启动和退出
      • 11.1.2. 断点设置
      • 11.1.3. 查看变量、内存数据和寄存器信息
      • 11.1.4. 查看堆栈信息
    • 11.2. 程序单步调试
      • 11.2.1. 语句单步调试
      • 11.2.2. 汇编指令的单步调试
      • 11.2.3. 退出当前函数
    • 11.3. 本章小结
    • 11.4. 习题
  • 12. 汇编程序性能优化
    • 12.1. 计算机体系架构的三类并行技术
    • 12.2. 使用向量指令
    • 12.3. 指令融合和地址对齐
    • 12.4. 指令调度
      • 12.4.1. 指令流水线和流水线冲突
      • 12.4.2. 指令调度
    • 12.5. 循环展开
    • 12.6. 性能分析工具 perf
      • 12.6.1. perf stat 的使用
      • 12.6.2. perf top 的使用
      • 12.6.3. perf record/report 的使用
    • 12.7. 本章小结
    • 12.8. 习题
  • 13. 常用汇编示例——使用速查
    • 13.1. 基础指令类
    • 13.2. 基础浮点指令类
    • 13.3. 符号处理类
    • 13.4. 汇编伪指令类
  • 14. 说明
汇编语言编程基础 基于LoongArch
  • Search


© Copyright 2022-2026, 龙芯中科技术股份有限公司. Last updated on Jun 12, 2026 7:47:31 AM.