第1章 引言
1.1 欢迎加入编程大军
1.2 工具
第2章 计算机体系结构
2.1 内存结构
2.2 CPU构造
2.3 几个术语
2.4 内存详解
2.5 寻址方式
2.6 温故知新
2.6.1 理解概念
2.6.2 应用概念
2.6.3 深入学习
第3章 编写第一个程序
3.1 编程初体验
3.2 汇编语言程序概要
3.3 为程序做规划
3.4 查找最大值
3.5 寻址方式
3.6 温故知新
3.6.1 理解概念
3.6.2 应用概念
3.6.3 深入学习
第4章 关于函数
4.1 处理复杂度
4.2 函数的工作原理
4.3 使用C调用约定的汇编语言函数
4.4 函数示例
4.5 递归函数
4.6 温故知新
4.6.1 理解概念
4.6.2 应用概念
4.6.3 深入学习
第5章 文件处理
5.1 UNIX文件的概念
5.2 缓冲区和.bss
5.3 标准文件和特殊文件
5.4 在程序中使用文件
5.5 温故知新
5.5.1 理解概念
5.5.2 应用概念
5.5.3 深入学习
第6章 读写简单记录
6.1 写入记录
6.2 读取记录
6.3 修改记录
6.4 温故知新
6.4.1 理解概念
6.4.2 应用概念
6.4.3 深入学习
第7章 开发健壮的程序
7.1 将时间用在何处
7.2 开发健壮程序的技巧
7.2.1 用户测试
7.2.2 数据测试
7.2.3 模块测试
7.3 有效处理错误
7.3.1 万能的错误处理代码
7.3.2 恢复点
7.4 让程序更健壮
7.5 温故知新
7.5.1 理解概念
7.5.2 应用概念
7.5.3 深入学习
第8章 与代码库共享程序
8.1 使用共享库
8.2 共享库的工作原理
8.3 查找关于库的信息
8.4 一些有用的函数
8.5 构建一个共享库
8.6 温故知新
8.6.1 理解概念
8.6.2 应用概念
8.6.3 深入学习
第9章 关于中间存储器
9.1 计算机如何看待内存
9.2 Linux程序的内存布局
9.3 每个内存地址都是虚拟的
9.4 获取更多的内存
9.5 一个简单的内存管理器
9.5.1 变量和常量
9.5.2 性能问题及其他
9.6 使用我们的分配器
9.7 更多信息
9.8 温故知新
9.8.1 理解概念
9.8.2 应用概念
9.8.3 深入学习
第10章 像计算机一样计数
10.1 计数
10.1.1 像人类一样计数
10.1.2 像计算机一样计数
10.1.3 二进制和十进制之间的转换
10.2 真假和二进制数
10.3 程序状态寄存器
10.4 其他计数系统
10.4.1 浮点数
10.4.2 负数
10.5 八进制和十六进制数字
10.6 一个字中的字节顺序
10.7 将数字转换成字符显示
10.8 温故知新
10.8.1 理解概念
10.8.2 应用概念
10.8.3 深入学习
第11章 高级语言
11.1 编译语言和解释语言
11.2 第一个C程序
11.3 Perl
11.4 Python
11.5 温故知新
11.5.1 理解概念
11.5.2 应用概念
11.5.3 深入学习
第12章 优化
12.1 何时优化
12.2 优化何处
12.3 局部优化
12.4 全局优化
12.5 温故知新
12.5.1 理解概念
12.5.2 应用概念
12.5.3 深入学习
第13章 学无止境
13.1 自下而上
13.2 自顶向下
13.3 从中间开始
13.4 专题
13.5 汇编语言的更多资源
附录A GUI编程
附录B 通用x86指令
附录C 重要的系统调用
附录D ASCII码
附录E 汇编语言中的常用C语句
附录F 使用GDB调试器
附录G 文档历史
附录H GNU自由文档许可协议
附录I 致谢
索引
展开
★“程序员不了解CPU的工作方式,就好比行医之人不懂解剖学,只能取得有限的成功。我强力推荐本书,即使你从不用汇编语言编程!……它必将成为你的灵感之源,助力你提高编程技能。”
——《软件随想录》作者Joel Spolsky
★“这本书是我们系统编程课的教材,其内容组织与阐释非常棒,尤其是关于底层内存管理那部分。你还在为不理解calloc和malloc的工作方式而苦恼吗?不妨看一下其中编写基本内存管理程序的汇编代码。另外,本书很好地介绍了gcc编译器和IA-32架构,因此拥有一个英特尔处理器和一个Linux分区,你便可运行示例及自编程序!”
“我看了很多Linux平台汇编语言编程的书,本书是我的最爱(实在没有多少书能与其竞争)!一直听说汇编语言令人费解,这本书却让我发现它是多么容易。我没有任何用汇编语言编程的意图,但了解了基础知识之后,我对高级语言代码的编译过程有了更好的理解和认识,而且终于搞懂了指针以及堆与栈的区别!”
——读者