网站颜色:

28024|现货包邮汇编语言程序设计 高级语言开发 计算机软件与程序设计书籍教材 编译器生成汇编语言代码 提高应用程序性能[图书]

  • 产品名称:汇编语言程序设计
  • 书名:汇编语言程序设计
  • 作者:RichardBlum
  • 作者地区:美国
  • 译者:马朝晖
  • 定价:48.00元
  • 书名:汇编语言程序设计
  • 开本:16开
  • 是否是套装:否
  • 出版社名称:机械工业出版社

欢乐逛海报

79
书名: 【正版】汇编语言程序设计[图书]|28024
图书定价: (咨询特价)
图书作者: (美)Richard Blum
出版社: 机械工业出版社
出版日期: 2006/1/1 0:00:00
ISBN号: 7111175328
开本: 16开
页数: 409
版次: 1-1
作者简介
Richard Blum 毕业于美国普度大学电气工程专业,在美国一家政府组织工作了15年以上。在此期间,他使用过各种编程语言(C、C++、Java和Microsoft VB .NET以及C#)编写实用程序,因此他发现一个非常有价值的事实:通过研究编译器生成的汇编语言代码及使用汇编语言例程,可
内容简介
每种高级语言程序在连接为可执行程序之前,都必须被编译为汇编语言程序,因此对于高级语言程序设计者来说,了解编译器如何生成汇编语言代码十分有用。
本书分为三部分。第一部分讲解汇编语言程序设计环境基础,第二部分研究汇编语言程序设计,最后一部分讲解高级汇编语言技术。本书的主要目的是向使用高级语言的程序员讲解编译器如何从C和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特性
编辑推荐
每种高级语言(比如C和C++)在连接为可执行程序之前都会被编译器转换成汇编语言。本书面向使用高级语言的开发人员,讲解如何查看和解释编译器生成的汇编语言代码,了解它们是如何创建的,从而可以修改编译器生成的代码或创建自己的汇编语言例程。本书揭示如何使程序中的函数更快更高效的内幕,以及提高应用程序性能的方法。
本书主要内容:
● 查看高级语言程序生成的汇编语言代码的好处;
● 如何为Linux奔腾处理器环境创建独立的汇编语言程序;
● 如何将高级函数和库整合到汇编语言程序中;
● 如何将汇编语言例程整合到C和C++应用程序中;
● 如何在汇编语言程序中使用Linux系统调用;
● 如何在应用程序中使用奔腾处理器的MMX和SSE功能。 
在目前正在使用的程序设计语言之中,汇编语言是被误解得最深的一种。当提到“汇编语言”这个术语时,经常使人联想到低级的位移动和在长达数千页的指令手册中费力地查找正确的指令格式。随着各种出色的高级语言开发工具的快速发展,在各种程序设计新闻组中“汇编语言程序设计已经死亡了”这种评论并不少见。 但是,汇编语言程序设计远没有到死亡的时候。每种高级语言程序在能够连接为可执行程序之前都必须被编译为汇编语言程序。对于高级语言程序设计者来说,了解编译器如何生成汇编语言代码很有用处,这表现在使用汇编语言直接编写例程和了解编译器如何把高级语言转换为汇编语言方面。 本书目的 本书的主要目的是向使用高级语言的程序员讲解高级语言程序是如何被转换为汇编语言的,以及如何掌握生成的汇编语言代码。这就是说,本书的主要读者是已经熟悉高级语言(比如C、C++,甚至Java)的程序员。本书没有花时间讲解基本的程序设计原则。我们假设读者已经熟悉计算机程序设计的基础,并且有兴趣学习汇编语言以便了解程序运行的幕后发生了什么。 但是,如果你是程序设计的初学者并且把汇编语言程序设计作为起点,本书也没有完全忽略你的要求。可以从头到尾阅读各个章节获得如何进行汇编语言程序设计(和一般的程序设计)的基础知识。书中的每个主题都包括范例代码来演示汇编语言指令如何工作。如果你完全是程序设计新手,也可以从本书开始学习程序设计,进而学习本书其他高级主题。 本书范围 本书的主要目的是使C和C++程序员熟悉汇编语言,讲解编译器如何从C和C++程序创建汇编语言例程,并讲解如何整理生成的汇编语言例程以便提高应用程序的性能。 所有用高级语言(比如C和C++)编写的程序,在被连接为可执行程序之前,都会被编译器转换为汇编语言。编译器使用编译器的设计者定义的特定规则来确定如何正确地转换高级语言语句。很多程序员只是编写高级语言程序并且假设编译器会创建正确的可执行代码来实现程序。 但是,情况并非总是如此。当编译器把高级语言代码转换为汇编语言代码时,稀奇古怪的事情经常出现。另外,编译器往往遵循非常特别的转换规则,以至于不能在最终的汇编语言代码中发现节省时间的捷径,而对于编写不良的高级例程,它也不能加以改善。在这样的情况下,汇编语言代码的知识就有用武之地了。 本书正是讲解汇编语言的知识,描述在连接为可执行程序之前如何检查编译器生成的汇编语言代码,并发现可以修改何处代码来提高性能或者提供附加功能,帮助读者理解编译器的转换处理是如何影响高级语言例程的。 本书结构 本书分为三个部分。第一部分讲解汇编语言程序设计环境的基础。因为汇编语言在各种处理器和汇编器之间是不同的,所以必须选择常见的平台。本书使用运行在Intel处理器系列上的Linux操作系统。Linux环境提供丰富的程序开发工具,比如优化编译器、汇编器、连接器和调试器,它们的费用很低,或者是免费的。Linux环境之中这些丰富的开发工具使它非常适合把C程序剖析为汇编语言代码。 第一部分的各章如下: 第1章“什么是汇编语言”,一开始确保你确切地了解什么是汇编语言以及如何将它融入程序设计模型。这一章揭开了汇编语言的神秘面纱,并且提供了解如何把汇编语言和高级语言一起使用的基础知识。 第2章“IA-32平台”,提供对Intel奔腾处理器系列的简要介绍。当使用汇编语言时,了解底层的处理器和它如何处理程序是很重要的。但是这一章没有打算对IA—32平台的操作进行深入的分析,也没有提供在这个平台上进行程序设计涉及到的硬件和操作。 第3章“相关的工具”,讲解本书中使用的Linux开放源代码的开发工具。本书中使用GNU编译器、汇编器、连接器和调试器对程序进行编译、汇编、连接和调试。 第4章“汇编语言程序范例”;演示如何在Linux系统上使用GNU工具创建、汇编、连接和调试简单的汇编语言程序。这一章还演示如何在Linux系统上在汇编语言程序中使用C库函数为汇编语言应用程序添加额外的特性。 本书的第二部分研究汇编语言程序设计的基础。在能够分析编译器生成的汇编语言代码之前,必须了解汇编语言指令。这一部分的各章如下: 第5章“传送数据”,讲解在汇编语言程序中如何传送数据素。讲解寄存器、内存位置和堆栈的概念,并且提供在它们之间传送数据的范例。 第6章“控制执行流程”,描述汇编语言程序中使用的分支指令。这可能是程序最为重要的特性之一,认识分支并且优化分支的能力对提高应用程序的性能是至关重要的。 第7章“使用数字”,讨论在汇编语言中如何使用不同的数字数据类型。能够在汇编语言程序内正确地处理整数和浮点值是很重要的。 第8章“基本数学功能”,讲解如何使用汇编语言指令实现基本的数学功能,比如加、减、乘和除。虽然这些通常是直接的功能,但是可以使用灵活的技巧提高这一领域工作的性能。 第9章“高级数学功能”,讨论IA-32浮点运算单(FloatingPointUnit,FPU),以及如何使用它处理复杂的浮点运算。浮点运算对于数据处理程序经常是至关重要的,了解它如何工作对高级语言程序员有非常大的好处。 第10章“处理字符串”,讲解汇编语言的各种字符串处理指令。字符数据是高级语言程序设计的另一个重要方面。在高级语言中处理字符串时,了解汇编语言层面上如何处理字符串能够提供深入的认识。 第11章“使用函数”,开始深入地讲解汇编语言程序设计。创建汇编语言函数去执行例程是汇编语言优化的核心。了解汇编语言函数的基础知识是有益的,因为编译器从高级语言代码生成汇编语言代码时经常会使用它们。 第12章“使用Linux系统调用”,这一章结束了这一部分,它演示使用已经创建的函数可以在汇编语言中执行多少高级功能。Linux系统提供很多高级功能,例如输出到显示器的功能。在汇编语言程序中经常可以利用它们。 第三部分讲解更加高级的汇编语言主题。因为本书的主要主题是如何在C或者C++代码之中并入汇编语言例程,所以最初的几章只是讲解如何这样做。其余的各章讲解一些更加高级的主题,圆满地完成读者对汇编语言程序设计的学习。这一部分包括下面这几章: 第13章“使用内联汇编”,讲解如何把汇编语言例程直接并入你的C或者C++语言程序中。内联汇编语言经常用于在C程序中“硬编码”快速例程,以便确保编译器为例程生成适当的汇编语言代码。 第14章“调用汇编库”,演示可以如何把汇编语言函数组合为库,供众多应用程序(包括汇编语言程序和高级语言程序)使用。能够把频繁使用的函数组合为C或者C++程序可以调用的单一库是非常节省时间的特性。 第15章“优化例程”,本书的核心部分:修改编译器生成的汇编语言代码以便满足特定要求。这一章讲解在汇编语言代码中究竟如何生成不同类型的C例程(比如if-then语句和for-next循环)。了解了汇编语言代码在做什么之后,就可以对它进行修改以便为特定的环境定制代码。 第16章“使用文件”,讲解汇编语言程序设计中最被忽视的功能之一。几乎所有应用程序都需要对系统进行某种类型的文件访问。汇编语言程序也不例外。这一章讲解如何使用Linux的文件处理系统调用读取、写入和修改系统中文件内的数据。 第17章“使用高级IA-32特性”,这一章结束了本书,它讲解高级的Intel的单指令多数据(Single Instruction Multiple Data,SIMD)技术。这种技术为程序员提供在单一指令之中执行多个运算操作的平台。在音频和视频数据处理的领域之中,这种技术变得非常重要。 使用本书的要求 本书中的所有范例都用汇编语言编写,并且运行在Linux操作系统和Intel处理器平台上。本书中广泛地使用开放源代码的GNU编译器(gcc)、汇编器(gas)、连接器(1d)和调试器(gdb)演示汇编语言特性。第4章专门讨论如何在Linux平台上使用这些工具创建、汇编、连接和调试汇编语言程序。如果读者没有安装Linux平台,第4章演示了如何使用可以直接从光盘引导的、无需修改工作站硬盘的Linux版本。无需在工作站上安装Linux,就可以使用本书中使用的所有GNU开发工具。 约定 为了帮助读者从书中得到最大的收益以及充分理解内容,我们在本书中使用了数种约定。 技巧、提示、诀窍和当前讨论之外的内容使用楷体沛。在代码范例中我们使用灰色背景突出显示新的和重要的代码,而当前上下文中不那么重要的代码以及以前显示过的代码将不用 灰色背景。 源代码 当你研究本书中的范例时,可以选择手工输入所有代码,或者从网上下载本书源代码文件。本书中用到的所有示例源代码都可以从www.wrox.com下载。访问这个站点时,只需查找本书的名称(可以使用Search文本框,也可以使用书名列表之一),然后在本书的具体介绍页面上点击Download Code链接即可获得本书的所有源代码。” 因为很多书籍的名称类似,所以查找书籍最简单的方式是通过ISBN查找;本书的ISBN是0-7645-7901-0。 下载代码后可以使用常用的压缩工具解压。或者可以到Wrox公司的代码下载页面(www.wrox.com/dynamic/books/download.aspx)查看本书和所有其他Wrox的书籍的代码。 勘误 我们尽了最大的努力来确保文本或者代码中没有错误。但是,没有人能够做到完美,错误在所难免。如果发现我们的书中有错误,比如拼写错误或者有错误的代码段,我们将非常高兴收到反馈。通过发送勘误表,可能避免另外一个读者数小时的迷惑,同时帮助我们提供品质更好的信息。 要查看本书的勘误表,可以访问www.wrox.com并且使用Search文本框或者书名列表之一查找书籍名称。然后,在书籍的具体介绍页面上点击BookErrata链接。在这个页面上,可以查看关于本书已经提交的和Wrox公司的编辑公布的所有勘误。完整的书籍列表,包括到每本书的勘误的链接,都可以在www.wrox.com/misc-pages/booklist.shtml页面上找到。 如果没有在Book Errata页面上找到“你的”错误,请访问www.wrox.com/contact/techsupport.shtml并且完整填写这里的表单,把发现的错误发送给我们。我们会查看这些信息,并且,如果正确的话,会在书籍的勘误页面上公布消息并在书籍以后的版本中修正这些问题。p2p.wrox.com 为了与作者和同行们进行讨论,请加入P2P论坛:p2p.wrox.com。这个论坛是基于Web的系统,你可以张贴关于Wrox公司书籍的和关于技术的消息,可以和其他读者以及技术用户进行交流。论坛提供订阅功能,当论坛上发布新帖子的时候,可以通过电子邮件发送你所选择的感兴趣的主题。Wrox公司的作者、编辑、其他业界专家以及本书读者都会出现在这些论坛上。 在http://p2p.wrox.com上,你会发现许多不同的论坛,在你阅读本书及开发自己的应用程序时,它们都能够给你提供帮助。可以按照下面的步骤加入论坛: 1)访问p2p.wrox.com,点击Register链接。 2)阅读使用条款并且点击Agree。 3)填写必需的信息以及你希望提供的任何可选的信息,点击Submit。 4)然后你会收到描述如何验证帐户和完成加入过程的电子邮件。 不加入P2P也可以阅读论坛的消息,但是要想发布自己的消息,就必须加入。 加入后,你可以发布新的消息并且回复其他用户发布的消息。任何时候都可以在Web上阅读消息。如果希望特定的论坛使用电子邮件通知新的消息,可以在论坛列表中点击这个论坛的Subscribe链接。 关于如何使用Wrox公司的P2P的更多信息,请阅读P2PFAQ,它们回答了关于论坛软件如何工作的问题,这些FAQ也包括关于P2P和Wrox公司书籍的很多常见问题。要阅读FAQ,可以在任何P2P页面上点击FAQ链接。
79
热门设计服务