学习linux环境下汇编的好书《汇编语言程序设计》

时间:2022-02-15 16:07:59

http://www.china-pub.com/28024

 

 美河上能下到

目录

前言
第一部分 汇编语言程序设计环境基础
第1章 什么是汇编语言
1.1 处理器指令
1.1.1 指令码处理
1.1.2 指令码格式
1.2 高级语言
1.2.1 高级语言的种类
1.2.2 高级语言的特性
1.3 汇编语言
1.3.1 操作码助记符
1.3.2 定义数据
1.3.3 命令
1.4 小结
第2章 ia-32平台
2.1 ia-32处理器的核心部分
2.1.1 控制单元
2.1.2 执行单元
2.1.3 寄存器
2.1.4 标志
.2.2 ia-32的高级特性
2.2.1 x87浮点单元
2.2.2 多媒体扩展
2.2.3 流化simd扩展
2.2.4 超线程
2.3 ia-32处理器系列
2.3.1 intel处理器
2.3.2 非intel处理器
2.4 小结
第3章 相关的工具
3.1 开发工具
3.1.1 汇编器
3.1.2 连接器
3.1.3 调试器
3.1.4 编译器
3.1.5 目标代码反汇编器
3.1.6 简档器
3.2 gnu汇编器
3.2.1 安装汇编器
3.2.2 使用汇编器
3.2.3 关于操作码语法
3.3 gnu连接器
3.4 gnu编译器
3.4.1 下载和安装gcc
3.4.2 使用gcc
3.5 gnu调试器程序
3.5.1 下载和安装gdb
3.5.2 使用gdb
3.6 kde调试器
3.6.1 下载和安装kdbg
3.6.2 使用kdbg
3.7 gnu objdump程序
3.7.1使用objdump
3.7.2 objdump范例
3.8 gnu简档器程序’
3.8.1 使用简档器
3.8.2 简档范例
3.9 完整的汇编开发系统
3.9.1 linux基础
3.9.2 下载和运行mepis
3.9.3 新的开发系统
3.10 小结
第4章 汇编语言程序范例
4.1 程序的组成
4.1.1 定义段
4.1.2 定义起始点
4.2 创建简单程序
4.2.1 cpuid指令
4.2.2 范例程序
4.2.3 构建可执行程序
4.2.4 运行可执行程序
4.2.5 使用编译器进行汇编
4.3 调试程序
4.4 在汇编语言中使用c库函数
4.4.1 使用printf
4.4.2 连接c库函数
4.5 小结
第二部分 汇编语言程序设计基础
第5章 传送数据
5.1 定义数据元素
5.1.1 数据段
5.1.2 定义静态符号
5.1.3 bss段
5.2 传送数据元素
5.2.1 mov指令格式
5.2.2 把立即数传送到寄存器和内存
5.2.3 在寄存器之间传送数据
5.2.4 在内存和寄存器之间传送数据
5.3 条件传送指令
5.3.1 cmov指令
5.3.2 使用cmov指令
5.4 交换数据
5.4.1 数据交换指令
5.4.2 使用数据交换指令
5.5 堆栈
5.5.1 堆栈如何工作
5.5.2 压入和弹出数据
5.5.3 压入和弹出所有寄存器
5.5.4 手动使用esp和ebp寄存器
5.6 优化内存访问
5.7 小结
第6章 控制执行流程
6.1 指令指针
6.2 无条件分支
6.2.1 跳转
6.2.2 调用
6.2.3 中断
6.3 条件分支
6.3.1 条件跳转指令
6.3.2 比较指令
6.3.3 使用标志位的范例
6.4 循环
6.4.1 循环指令
6.4.2 循环范例
6.4.3 防止loop灾难
6.5 模仿高级条件分支
6.5.1 if语句
6.5.2 for循环
6.6 优化分支指令
6.6.1 分支预测
6.6.2 优化技巧
6.7 小结
第7章 使用数字
7.1 数字数据类型
7.2 整数
7.2.1 标准整数长度
7.2.2 无符号整数
7.2.3 带符号整数
7.2.4 使用带符号整数
7.2.5 扩展整数
7.2.6 在gnu汇编器中定义整数
7.3 simd整数
7.3.1 mmx整数
7.3.2 传送mmx整数
7.3.3 sse整数
7.3.4 传送sse整数
7.4 二进制编码的十进制
7.4.1 bcd是什么
7.4.2 fpubcd值
7.4.3 传送bcd值
7.5 浮点数
7.5.1 浮点数是什么
7.5.2 标准浮点数据类型
7.5.3 ia-32浮点值
7.5.4 在gnu汇编器中定义浮点值
7.5.5 传送浮点值
7.5.6 使用预置的浮点值
7.5.7 sse浮点数据类型
7.5.8 传送sse浮点值
7.6 转换
7.6.1 转换指令
7.6.2 转换范例
7.7 小结
第8章 基本数学功能
8.1 整数运算
8.1.1 加法
8.1.2 减法
8.1.3 递增和递减
8.1.4 乘法
8.1.5 除法
8.2 移位指令
8.2.1 移位乘法
8.2.2 移位除法
8.2.3 循环移位
8.3 十进制运算
8.3.1 不打包bcd的运算
8.3.2 打包bcd的运算
8.4 逻辑操作
8.4.1 布尔逻辑
8.4.2 位测试
8.5 小结
第9章 高级数学功能
9.1 fpu环境
9.1.1 fpu寄存器堆栈
9.1.2 fpu状态、控制和标记寄存器
9.1.3 使用fpu堆栈
9.2 基本浮点运算
9.3 高级浮点运算
9.3.1 浮点功能
9.3.2 部分余数
9.3.3 三角函数
9.3.4 对数函数
9.4 浮点条件分支
9.4.1 fcom指令系列
9.4.2 fcomi指令系列
9.4.3 fcmov指令系列
9.5 保存和恢复fpu状态
9.5.1 保存和恢复fpu环境
9.5.2 保存和恢复fpu状态
9.6 等待和非等待指令
9.7 优化浮点运算
9.8 小结
第10章 处理字符串
10.1 传送字符串
10.1.1 movs指令
10.1.2 rep前缀
10.1.3 其他rep指令
10.2 存储和加载字符串
10.2.1 lods指令
10.2.2 stos指令
10.2.3 构建自己的字符串函数
10.3 比较字符串
10.3.1 cmps指令
10.3.2 cmps和rep一起使用
10.3.3 字符串不等
10.4 扫描字符串
10.4.1 scas指令
10.4.2 搜索多个字符
10.4.3 计算字符串长度
10.5 小结
第11章 使用函数
11.1 定义函数
11.2 汇编函数
11.2.1 编写函数
11.2.2 访问函数
11.2.3 函数的放置
11.2.4 使用寄存器
11.2.5 使用全局数据
11.3 按照c样式传递数据值
11.3.1 回顾堆栈
11.3.2 在堆栈之中传递函数参数
11.3.3 函数开头和结尾
11.3.4 定义局部函数数据
11.3.5 清空堆栈
11.3.6 范例
11.3.7 在操作之中监视堆栈
11.4 使用独立的函数文件
11.4.1 创建独立的函数文件
11.4.2 创建可执行文件
11.4.3 调试独立的函数文件
11.5 使用命令行参数
11.5.1 程序剖析
11.5.2 分析堆栈
11.5.3 查看命令行参数
11.5.4 查看环境变量
11.5.5 使用命令行参数的范例
11.6 小结
第12章 使用linux系统调用
12.1 linux内核
12.1.1 内核组成
12.1.2 linux内核版本
12.2 系统调用
12.2.1 查找系统调用
12.2.2 查找系统调用定义
12.2.3 常用系统调用
12.3 使用系统调用
12.4 复杂的系统调用返回值
12.4.1 sysinfo系统调用
12.4.2 使用返回结构
12.4.3 查看结果
12.5 跟踪系统调用
12.5.1 strace程序
12.5.2 高级strace参数
12.5.3 监视程序系统调用
12.5.4 附加到正在运行的程序
12.6 系统调用和c库
12.6.1 c库
12.6.2 跟踪c函数
12.6.3 系统调用和c库的比较
12.7小结
第三部分 高级汇编语言技术
第13章 使用内联汇编
13.1 什么是内联汇编
13.2 基本的内联汇编代码
13.2.1 asm格式
13.2.2 使用全局c变量
13.2.3 使用volatile修饰符
13.2.4 使用替换的关键字
13.3 扩展asm
13.3.1 扩展asm格式
13.3.2 指定输入值和输出值
13.3.3 使用寄存器
13.3.4 使用占位符
13.3.5 引用占位符
13.3.6 替换的占位符
13.3.7 改动的寄存器列表
13.3.8 使用内存位置
13.3.9 使用浮点值
13.3.10 处理跳转
13.4 使用内联汇编代码
13.4.1 什么是宏
13.4.2 c宏函数
13.4.3 创建内联汇编宏函数
13.5 小结
笫14章 调用汇编库
14.1 创建汇编函数
14.2 编译c和汇编程序
14.2.1 编译汇编源代码文件
14.2.2 使用汇编目标代码文件
14.2.3 可执行文件
14.3 在c程序中使用汇编函数
14.3.1 使用整数返回值
14.3.2 使用字符串返回值
14.3.3 使用浮点返回值
14.3.4 使用多个输入值
14.3.5 使用混合数据类型的输入值
14.4 在c++程序中使用汇编函数
14.5 创建静态库
14.5.1 什么是静态库
14.5.2 ar命令
14.5.3 创建静态库文件
14.5.4 编译静态库
14.6 使用共享库
14.6.1 什么是共享库
14.6.2 创建共享库
14.6.3 编译共享库
14.6.4 运行使用共享库的程序
14.7 调试汇编函数
14.7.1 调试c程序
14.7.2 调试汇编函数
14.8 小结
第15章 优化例程
15.1 优化编译器代码
15.1.1 编译器优化级别1
15.1.2 编译器优化级别2
15.1.3 编译器优化级别3
15.2 创建优化的代码
15.2.1 生成汇编语言代码
15.2.2 查看优化的代码
15.2.3 重新编译优化的代码
15.3 优化技巧
15.3.1 优化运算
15.3.2 优化变量
15.3.3 优化循环
15.3.4 优化条件分支
15.3.5 通用子表达式消除
15.4 小结
第16章 使用文件
16.1 文件处理顺序
16.2 打开和关闭文件
16.2.1 访问类型
16.2.2 unix权限
16.2.3 打开文件代码
16.2.4 打开错误返回代码
16.2.5 关闭文件
16.3 写入文件
16.3.1 简单的写入范例
16.3.2 改变文件访问模式
16.3.3 处理文件错误
16.4 读取文件
16.4.1 简单的读取范例
16.4.2 更加复杂的读取范例
16.5 读取、处理和写入数据
16.6 内存映射文件
16.6.1 什么是内存映射文件
16.6.2 mmap系统调用
16.6.3 mmap汇编语言格式
16.6.4 mmap范例
16.7 小结
第17章 使用高级ia-32特性
17.1 simd简介
17.1.1 mmx
17.1.2 sse
17.1.3 sse2
17.2 检测支持的simd操作
17.2.1 检测支持
17.2.2 simd特性程序
17.3 使用mmx指令
17.3.1 加载和获得打包的整数值
17.3.2 执行mmx操作
17.4 使用sse指令
17.4.1 传送数据
17.4.2 处理数据
17.5 使用sse2指令
17.5.1 传送数据
17.5.2 处理数据
17.6 sse3指令
17.7 小结