作品简介

《编程卓越之道(卷2):运用底层语言思想编写高级语言代码(第2版)》介绍在使用高级语言编程时,程序员如何点点滴滴地提高程序运行效率,并在编写代码时,透彻地理解变量、数组、字符串、数据结构、过程与函数等方面各种方案的优缺点,从而恰当运用。书中阐述计算机编程语言在底层硬件上的工作原理,引入了一种被称为“高级汇编语言HLA”的学习工具。通过查看、比较编译器生成的汇编语言或机器代码,程序员能够了解代码的底层实现,以便在高级语言编程时选择最恰当的方式高效地达到自身的目标。本书是一部提高程序员专业能力,以及通往编程大师之路的不可多得的佳作。

《编程卓越之道(卷2):运用底层语言思想编写高级语言代码(第2版)》适合高等学校学生在掌握基本编程能力后,在有志于从事软件行业并精于此道时修炼使用,也可供已参加工作的程序员进一步研修、优化工作技能时参考。此外,对于有意向编写编译器的程序员,此书可提供从普通应用到底层编译的衔接,便于他们学习初步的编译原理入门知识。

Randall Hyde是The Art of Assembly Language(《汇编语言的编程艺术》)和Write Great Code(《编程卓越之道》)1~3卷(均由No Starch Press出版),以及Using 6502 Assembly Language和P-Source(由Datamost出版)的作者。他也是Microsoft Macro Assembler 6.0 Bible(由Waite Group出版)一书的合著者。在过去的40年里,Hyde一直从事嵌入式软件/硬件工程师的工作,为核反应堆、交通控制系统和其他电子设备开发相关指令集。他还在加州理工大学波莫纳分校和加州大学河滨分校教授计算机科学课程。

《编程卓越之道:运用底层语言思想编写高级语言代码》(卷2)(第2版)译著是以张益硕一家为主体,众位亲戚朋友鼎力相助下完成的。母亲刘坤玉获北京邮电大学双学士学位,现任某著名外企业务主管、高级工程师,完成了部分章节翻译及全书的文笔校核工作。父亲张菲为华中科技大学电子系硕士,资深IT人士,翻译过诸如《代码大全2》、《编程卓越之道(第2卷):运用底层语言思想编写高级语言代码》等著作,现任某IT企软件主管,负责部分章节翻译及全书的技术校核、与编辑的沟通工作。儿子张益硕积极参与并承担了本书若干章节的的翻译,现为深圳红山中学高二学生,从小对计算机、编程和英语有深厚兴趣,曾在国家奥林匹克竞赛中获奖。

作品目录

  • 内容简介
  • 译者序
  • 人们对《编程卓越之道(卷2):运用底层语言思想编写高级语言代码》(第1版)的赞誉之辞
  • 关于作者
  • 关于技术审校者
  • 致谢
  • 引言
  • 1 以底层语言思考,用高级语言编程
  • 1.1 关于编译器质量的误区
  • 1.2 最好还是学一学汇编语言
  • 1.3 为何学习汇编语言并非绝对必要
  • 1.4 以底层语言思考
  • 1.5 编程用高级语言
  • 1.6 不特定于某种语言的方法
  • 1.7 附加提示
  • 1.8 获取更多信息
  • 2 要不要学汇编语言
  • 2.1 学习汇编语言的好处与障碍
  • 2.2 本书如何帮助你
  • 2.3 向高层汇编器求援
  • 2.4 高层汇编语言或汇编器(HLA)
  • 2.5 以高级语言思考,用底层语言编程
  • 2.6 汇编语言的编程范型—在底层思考
  • 2.7 获取更多信息
  • 3 高级语言程序员应具备的80x86汇编知识
  • 3.1 学一种汇编语言很好,能学几种汇编语言更好
  • 3.2 80x86汇编语言的语法
  • 3.3 文字常量
  • 3.4 汇编语言中的明示(符号)常量
  • 3.5 80x86的寻址模式
  • 3.6 汇编语言的数据声明
  • 3.7 在汇编语言中指定操作数尺寸
  • 3.8 获取更多信息
  • 4 编译器的操作与代码生成
  • 4.1 编程语言所用的文件类型
  • 4.2 编程语言的源文件
  • 4.3 计算机语言处理器的类型
  • 4.4 转换过程
  • 4.5 编译器的输出
  • 4.6 目标文件的格式
  • 4.7 可执行文件的格式
  • 4.8 目标文件中的数据和代码对齐
  • 4.9 链接器及其对代码的影响
  • 4.10 获取更多信息
  • 5 分析编译器输出的工具
  • 5.1 背景知识
  • 5.2 让编译器输出汇编语言文件
  • 5.3 通过目标码工具分析编译器的输出
  • 5.4 通过反汇编程序分析编译器的输出
  • 5.5 使用Java字节码反汇编程序分析Java的输出
  • 5.6 使用IL反汇编程序分析微软C#和Visual Basic的输出
  • 5.7 通过调试器分析编译器的输出
  • 5.8 比对两次编译的输出
  • 5.9 获取更多信息
  • 6 常量与高级语言
  • 6.1 文字常量与程序效率
  • 6.2 绑定时刻
  • 6.3 文字常量与明示常量的比较
  • 6.4 常量表达式
  • 6.5 明示常量与只读内存数据的比较
  • 6.6 Swift的let语句
  • 6.7 枚举类型
  • 6.8 布尔常量
  • 6.9 浮点数常量
  • 6.10 字符串常量
  • 6.11 复合数据类型的常量
  • 6.12 常量值不会变化
  • 6.13 获取更多信息
  • 7 变量
  • 7.1 运行时期的内存组织
  • 7.2 变量是什么
  • 7.3 变量的存储
  • 7.4 常见的基本数据类型
  • 7.5 变量地址与高级语言
  • 7.6 内存中的变量对齐
  • 7.7 获取更多信息
  • 8 数组
  • 8.1 何谓数组
  • 8.2 获取更多信息
  • 9 指针
  • 9.1 指针的定义
  • 9.2 高级语言的指针实现
  • 9.3 指针与动态内存分配
  • 9.4 指针操作与指针算术运算
  • 9.5 内存分配的简单示例
  • 9.6 垃圾收集
  • 9.7 操作系统与内存分配
  • 9.8 堆内存的开销
  • 9.9 常见的指针问题
  • 9.10 现代编程语言中的指针
  • 9.11 托管指针
  • 9.12 获取更多信息
  • 10 字符串
  • 10.1 字符串格式
  • 10.2 静态字符串、伪动态字符串和动态字符串
  • 10.3 字符串的引用计数
  • 10.4 Delphi字符串格式
  • 10.5 在高级语言中使用字符串
  • 10.6 字符串中的Unicode字符数据
  • 10.7 Unicode字符串函数和性能
  • 10.8 获取更多信息
  • 11 记录、联合和类
  • 11.1 记录
  • 11.2 判别式联合
  • 11.3 变数类型
  • 11.4 命名空间
  • 11.5 类与对象
  • 11.6 协议与接口
  • 11.7 类、对象和性能
  • 11.8 获取更多信息
  • 12 算术与逻辑表达式
  • 12.1 算术表达式与计算机架构
  • 12.2 算术语句的优化
  • 12.3 算术表达式的副作用
  • 12.4 包含副作用:序列点
  • 12.5 避免让副作用造成麻烦
  • 12.6 强制按特定顺序计算
  • 12.7 短路求值
  • 12.8 算术运算的相对开销
  • 12.9 获取更多信息
  • 13 控制结构与程序判定
  • 13.1 控制结构如何影响程序效率
  • 13.2 底层控制结构入门
  • 13.3 goto语句
  • 13.4 if语句
  • 13.5 switch/case语句
  • 13.6 获取更多信息
  • 14 迭代控制结构
  • 14.1 while循环
  • 14.2 repeat..until(do..until/do..while)式的循环
  • 14.3 forever..endfor式的循环
  • 14.4 定次的for循环
  • 14.5 获取更多信息
  • 15 函数与过程
  • 15.1 简单的函数与过程调用
  • 15.2 叶函数/叶过程
  • 15.3 宏和内联函数
  • 15.4 向函数/过程传递参数
  • 15.5 活动记录和栈
  • 15.6 参数传递机制
  • 15.7 函数返回值
  • 15.8 获取更多信息
  • 后记:软件工程学
  • 词汇表
  • 网上附录
展开全部