汇编优化例程的目录(已完结)

1. 介绍
   1.1. 使用汇编代码的理由
   1.2. 不使用汇编代码的理由
   1.3. 本手册覆盖的操作系统

2. 在你开始之前
   2.1. 在你开始编程之前所要做的决定
   2.2. 制定测试策略
   2.3. 常见的编程陷阱

3. 汇编编程基础
   3.1. 可用的汇编器
   3.2. 寄存器集与基本指令

   3.3. 取址模式
   3.4. 指令代码格式
   3.5. 指令前缀

4. ABI标准
   4.1. 寄存器的使用
   4.2. 数据存储
   4.3. 函数调用惯例
   4.4. 名字重整(mangling)与名字修饰
   4.5. 函数例子

5. 在C++中使用固有函数
   5.1. 对系统代码使用固有函数
   5.2. 对标准C++中不可用的指令使用固有函数   5.3. 对向量操作使用固有函数
   5.4. 固有函数的可用性

6. 使用内联汇编
   6.1. MASM形式的内联汇编
   6.2. Gnu形式内联汇编
   6.3. Delphi Pascal中的内联汇编

7. 使用汇编器
   7.1. 静态链接库
   7.2. 动态链接器
   7.3. 源代码形式的库
   7.4. 用汇编制作类
   7.5. 线程安全函数
   7.6. Makefiles

8. 制作与多个编译器及平台兼容的函数库
   8.1. 支持多种名字重整方案
   8.2. 在32位模式中支持多个调用惯例
   8.3. 在64位模式中支持多个调用惯例
   8.4. 支持各种目标文件格式
   8.5. 支持其他高级语言

9. 为速度优化
   9.1. 识别代码中最关键部分
   9.2. 乱序执行
   9.3. 指令获取、解码与回收
   9.4. 指令时延与吞吐率
   9.5. 打破依赖链
   9.6. 跳转与调用

10. 优化大小
   10.1. 选择更短的指令
   10.2. 使用更短的常量与地址
   10.3. 重用常量
   10.4. 64位模式中的常量
   10.5. 64位模式中的地址与指针
   10.6. 出于对齐的目的,使指令更长
   10.7. 为对齐使用多字节NOP

11. 优化内存访问
   11.1. 缓存如何工作
   11.2. 追踪缓存
   11.3. μop缓存
   11.4. 数据对齐
   11.5. 代码对齐
   11.6. 组织数据改善缓存
   11.7. 组织代码改善缓存
   11.8. 缓存控制指令

12. 循环
   12.1. 使循环开销最小
   12.2. 归纳变量
   12.3. 移动循环不变代码
   12.4. 找出瓶颈
   12.5. 循环中指令获取、解码与回收
   12.6. 在执行单元间平均分派μop
   12.7. 分析向量循环中瓶颈的一个例子

   12.8. Core2上相同的例子
   12.9. Sandy Bridge上相同的例子
   12.10. 使用FMA4相同的例子
   12.11. 使用FMA3相同的例子
   12.12. 循环展开
   12.13. 使用掩码寄存器的向量循环(AVX512)
   12.14. 优化缓存
   12.15. 并行
   12.16. 分析依赖性
   12.17. 没有乱序执行处理器上的循环
   12.18. 宏循环

13. 向量编程
   13.1. 使用AVX指令集与YMM寄存器
   13.2. 使用AVX512指令集与ZMM寄存器
   13.3. Xmm与ymm寄存器里的条件移动
   13.4. 使用AVX512的条件移动
   13.5. 以意图以外的其他类型使用向量指令
   13.6. 混排数据
   13.7. 产生常量
   13.8. 访问非对齐数据与向量局部
   13.9. 通用寄存器中的向量操作

14. 多线程
   14.1. 多线程并行
15. CPU分派
   15.1. 检查操作系统对XMM与YMM寄存器的支持

16. 有问题的指令
   16.1. LEA指令(所有处理器)
   16.2. INC与DEC
   16.3. XCHG(所有处理器)
   16.4. 偏移(shift)与旋转(rotate)(P4)
   16.5. 通过进位旋转(所有处理器)
   16.6. 比特测试(所有处理器)
   16.7. LAHF与SAHF(所有处理器)
   16.8. 整数乘法(所有处理器)
   16.9. 除法(所有处理器)
   16.10. 字符串指令(所有处理器)
   16.11. 向量化字符串指令(具有SSE4.2的处理器)
   16.12. WAIT指令(所有处理器)
   16.13. FCOM + FSTSW AX(所有处理器)
   16.14. FPREM(所有处理器)
   16.15. FRNDINT(所有处理器)
   16.16. FSCALE与指数函数(所有处理器)
   16.17. FPTAN(所有处理器)
   16.18. FSQRT(SSE处理器)
   16.19. FLDCW(大多数Intel处理器)
   16.20. MASKMOV指令

17. 特别话题
   17.1. XMM与浮点寄存器
   17.2. MMX与XMM寄存器
   17.3. XMM与YMM寄存器
   17.4. 释放浮点寄存器(所有处理器)
   17.5. 浮点与MMX指令间的转变
   17.6. 从浮点到整数的转换(所有处理器)
   17.7. 对浮点操作使用整数指令
   17.8. 对整数操作使用浮点指令
   17.9. 移动数据块(所有处理器)
   17.10. 自修改代码(所有处理器)

18. 测量性能
   18.1. 测试速度
   18.2. 单元测试的陷阱
19. 参考文献

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值