内容简介 · · · · · ·
《汇编语言程序设计》讲述每种高级语言程序在连接为可执行程序之前,都必须被编译为汇编语言程序,因此对于高级语言程序设计者来说,了解编译器如何生成汇编语言代码十分有用。
作者简介 · · · · · ·
Richard Blum 毕业于美国普度大学电气工程专业,在美国一家政府组织工作了15年以上。在此期间,他使用过各种编程语言(C、C++、Java和Microsoft VB .NET以及C#)编写实用程序,因此他发现一个非常有价值的事实:通过研究编译器生成的汇编语言代码及使用汇编语言例程,可明显提高高级语言程序的执行速度。本书正是他多年实践与研究的成果。
目录 · · · · · ·
第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章 传送数据
第6章 控制执行流程
第7章 使用数字
第8章 基本数学功能
第9章 高级数学功能
第10章 处理字符串
第11章 使用函数
第12章 使用Linux系统调用
第三部分 高级汇编语言技术
第13章 使用内联汇编
第14章 调用汇编库
第15章 优化例程
第16章 使用文件
第17章 使用高级IA-32特性
· · · · · · (收起)
喜欢读"汇编语言程序设计"的人也喜欢 · · · · · ·
汇编语言程序设计的话题 · · · · · · ( 全部 条 )
汇编语言程序设计的书评 · · · · · · ( 全部 9 条 )
本书面向使用高级语言的开发人员,讲解如何查看和解释编译器生成的汇编语言代码
> 更多书评9篇
读书笔记 · · · · · ·
我来写笔记-
Sherlock (希斯克利夫又何必硬装作是林顿)
#cpuid.s to extract the processor Vendor ID #as -o cpuid.o cpuid.s #ld -o cpuid cpuid.o #./cpuid .section .data output: .ascii "The processor Vendor ID is 'XXXXXXXXXXXX' \n" .section .text .global _start _start: #call CPUID movl $0, %eax cpuid #ID is in ebx,ecx and edx movl $output, %edi movl %ebx, 28(%edi) movl %ecx, 32(%edi) movl %edx, 36(%edi) #syscall 4 is write...2011-12-13 16:11
#cpuid.s to extract the processor Vendor ID#as -o cpuid.o cpuid.s#ld -o cpuid cpuid.o#./cpuid.section .dataoutput: .ascii "The processor Vendor ID is 'XXXXXXXXXXXX' \n".section .text.global _start_start:#call CPUID movl $0, %eaxcpuid#ID is in ebx,ecx and edxmovl $output, %edimovl %ebx, 28(%edi)movl %ecx, 32(%edi)movl %edx, 36(%edi)#syscall 4 is write movl $4, %eax# write parameter1:File descriptor, 0 stdin , 1 stdout , 2 errmovl $1, %ebx # write parameter2: start of data to writemovl $output, %ecx#write parameter3:length of data to writemovl $42, %edx#call writeint $0x80#syscall 1 is exitmovl $1,%eaxmovl $0,%ebxint $0x80注:这是用GNU编译器编译,GNU连接器连接的。GNU连接器查找_start标签以便确定程序的开始位置。如果要用GCC汇编程序的话,查找的是main标签,所以要把_start改为main。汇编连接gcc -o cpuid cpuid.s回应 2011-12-13 16:11
-
Sherlock (希斯克利夫又何必硬装作是林顿)
#cpuid.s to extract the processor Vendor ID #as -o cpuid.o cpuid.s #ld -o cpuid cpuid.o #./cpuid .section .data output: .ascii "The processor Vendor ID is 'XXXXXXXXXXXX' \n" .section .text .global _start _start: #call CPUID movl $0, %eax cpuid #ID is in ebx,ecx and edx movl $output, %edi movl %ebx, 28(%edi) movl %ecx, 32(%edi) movl %edx, 36(%edi) #syscall 4 is write...2011-12-13 16:11
#cpuid.s to extract the processor Vendor ID#as -o cpuid.o cpuid.s#ld -o cpuid cpuid.o#./cpuid.section .dataoutput: .ascii "The processor Vendor ID is 'XXXXXXXXXXXX' \n".section .text.global _start_start:#call CPUID movl $0, %eaxcpuid#ID is in ebx,ecx and edxmovl $output, %edimovl %ebx, 28(%edi)movl %ecx, 32(%edi)movl %edx, 36(%edi)#syscall 4 is write movl $4, %eax# write parameter1:File descriptor, 0 stdin , 1 stdout , 2 errmovl $1, %ebx # write parameter2: start of data to writemovl $output, %ecx#write parameter3:length of data to writemovl $42, %edx#call writeint $0x80#syscall 1 is exitmovl $1,%eaxmovl $0,%ebxint $0x80注:这是用GNU编译器编译,GNU连接器连接的。GNU连接器查找_start标签以便确定程序的开始位置。如果要用GCC汇编程序的话,查找的是main标签,所以要把_start改为main。汇编连接gcc -o cpuid cpuid.s回应 2011-12-13 16:11
-
Sherlock (希斯克利夫又何必硬装作是林顿)
#cpuid.s to extract the processor Vendor ID #as -o cpuid.o cpuid.s #ld -o cpuid cpuid.o #./cpuid .section .data output: .ascii "The processor Vendor ID is 'XXXXXXXXXXXX' \n" .section .text .global _start _start: #call CPUID movl $0, %eax cpuid #ID is in ebx,ecx and edx movl $output, %edi movl %ebx, 28(%edi) movl %ecx, 32(%edi) movl %edx, 36(%edi) #syscall 4 is write...2011-12-13 16:11
#cpuid.s to extract the processor Vendor ID#as -o cpuid.o cpuid.s#ld -o cpuid cpuid.o#./cpuid.section .dataoutput: .ascii "The processor Vendor ID is 'XXXXXXXXXXXX' \n".section .text.global _start_start:#call CPUID movl $0, %eaxcpuid#ID is in ebx,ecx and edxmovl $output, %edimovl %ebx, 28(%edi)movl %ecx, 32(%edi)movl %edx, 36(%edi)#syscall 4 is write movl $4, %eax# write parameter1:File descriptor, 0 stdin , 1 stdout , 2 errmovl $1, %ebx # write parameter2: start of data to writemovl $output, %ecx#write parameter3:length of data to writemovl $42, %edx#call writeint $0x80#syscall 1 is exitmovl $1,%eaxmovl $0,%ebxint $0x80注:这是用GNU编译器编译,GNU连接器连接的。GNU连接器查找_start标签以便确定程序的开始位置。如果要用GCC汇编程序的话,查找的是main标签,所以要把_start改为main。汇编连接gcc -o cpuid cpuid.s回应 2011-12-13 16:11
论坛 · · · · · ·
| 翻译的真是不敢恭维 | 来自bo | 1 回应 | 2011-09-08 |
| 翻译不是一般的烂啊! | 来自崔 | 2010-07-15 |
这本书的其他版本 · · · · · · ( 全部2 )
- Wrox版 2005-2-11 / 37人读过 / 有售
以下豆列推荐 · · · · · · ( 全部 )
- 运行时系统 (baozii)
- 计算机编程 (peterchen)
- 北京电子科技学院计算机科学与技术系大二下期推荐课本 (fiigii)
- 研究生 必读 (刘小江)
- Computer Science and Technology (海滩的一天)
谁读这本书?
二手市场
订阅关于汇编语言程序设计的评论:
feed: rss 2.0










0 有用 3肝4肾风之影 2011-06-12
看完了也就那么回事
0 有用 图拉鼎 2008-10-07
没看完
0 有用 悟道洞穴人 2011-03-23
AT&T风格汇编语言,看了一半
0 有用 Luke 2008-08-05
好书
0 有用 fuzhli 2008-10-24
把linux下的汇编和C结合的很好
0 有用 烽嶺祁雪 2016-11-30
非常非常好
0 有用 惜时如金 2016-06-09
在linux下学习汇编语言,很好。讲了很多函数调用的知识。
0 有用 家住六朝烟水间 2014-10-13
这本书世面上已经很少了,花了高价淘来的,是很少讲GNU gcc汇编(AT&T)的书,深入浅出,大师的经典。
0 有用 leehsia 2013-09-29
不错的一本书,比较简单。
0 有用 atmgnd 2013-10-28
历时一月,读完,