深入理解程序设计

出版社:人民邮电出版社
出版日期:2014-1
ISBN:9787115337887
作者:[美] Jonathan Bartlett
页数:208页

内容概要

Jonathan Bartlett
New Medio技术总监,负责为各公司定制Web应用、移动应用或企业软件解决方案。在此之前,他曾在EDS担任因特网开发经理一职,为Web团队和Wolfram Research提供技术支持。另外,他常在IBM DeveloperWorks社区撰文,介绍从高性能Playstation 3编程到高级元编程技巧等主题。

书籍目录

第1章 引言  1
1.1  欢迎加入编程大军  1
1.2  工具  2
第2章 计算机体系结构  5
2.1  内存结构  5
2.2  CPU构造  6
2.3  几个术语  7
2.4  内存详解  9
2.5  寻址方式  10
2.6  温故知新  11
2.6.1  理解概念  11
2.6.2  应用概念  11
2.6.3  深入学习  12
第3章 编写第一个程序  13
3.1  编程初体验  13
3.2  汇编语言程序概要  15
3.3  为程序做规划  19
3.4  查找最大值  21
3.5  寻址方式  27
3.6  温故知新  30
3.6.1  理解概念  30
3.6.2  应用概念  30
3.6.3  深入学习  31
第4章 关于函数  32
4.1  处理复杂度  32
4.2  函数的工作原理  33
4.3  使用C调用约定的汇编语言函数  34
4.4  函数示例  38
4.5  递归函数  41
4.6  温故知新  46
4.6.1  理解概念  46
4.6.2  应用概念  47
4.6.3  深入学习  47
第5章 文件处理  48
5.1  UNIX文件的概念  48
5.2  缓冲区和.bss  49
5.3  标准文件和特殊文件  50
5.4  在程序中使用文件  51
5.5  温故知新  60
5.5.1  理解概念  60
5.5.2  应用概念  61
5.5.3  深入学习  61
第6章 读写简单记录  62
6.1  写入记录  65
6.2  读取记录  69
6.3  修改记录  73
6.4  温故知新  76
6.4.1  理解概念  76
6.4.2  应用概念  76
6.4.3  深入学习  76
第7章 开发健壮的程序  77
7.1  将时间用在何处  77
7.2  开发健壮程序的技巧  78
7.2.1  用户测试  78
7.2.2  数据测试  78
7.2.3  模块测试  79
7.3  有效处理错误  80
7.3.1  万能的错误处理代码  80
7.3.2  恢复点  80
7.4  让程序更健壮  81
7.5  温故知新  83
7.5.1  理解概念  83
7.5.2  应用概念  83
7.5.3  深入学习  83
第8章 与代码库共享程序  84
8.1  使用共享库  85
8.2  共享库的工作原理  86
8.3  查找关于库的信息  87
8.4  一些有用的函数  91
8.5  构建一个共享库  92
8.6  温故知新  93
8.6.1  理解概念  93
8.6.2  应用概念  94
8.6.3  深入学习  94
第9章 关于中间存储器  95
9.1  计算机如何看待内存  95
9.2  Linux程序的内存布局  96
9.3  每个内存地址都是虚拟的  98
9.4  获取更多的内存  100
9.5  一个简单的内存管理器  101
9.5.1  变量和常量  106
9.5.2  性能问题及其他  111
9.6  使用我们的分配器  112
9.7  更多信息  114
9.8  温故知新  114
9.8.1  理解概念  114
9.8.2  应用概念  114
9.8.3  深入学习  115
第10章 像计算机一样计数  116
10.1  计数  116
10.1.1  像人类一样计数  116
10.1.2  像计算机一样计数  117
10.1.3  二进制和十进制之间的转换  118
10.2  真假和二进制数  120
10.3  程序状态寄存器  126
10.4  其他计数系统  127
10.4.1  浮点数  127
10.4.2  负数  128
10.5  八进制和十六进制数字  129
10.6  一个字中的字节顺序  130
10.7  将数字转换成字符显示  131
10.8  温故知新  135
10.8.1  理解概念  135
10.8.2  应用概念  136
10.8.3  深入学习  136
第11章 高级语言  137
11.1  编译语言和解释语言  137
11.2  第一个C程序  138
11.3  Perl  140
11.4  Python  141
11.5  温故知新  141
11.5.1  理解概念  141
11.5.2  应用概念  141
11.5.3  深入学习  142
第12章 优化  143
12.1  何时优化  143
12.2  优化何处  144
12.3  局部优化  145
12.4  全局优化  146
12.5  温故知新  147
12.5.1  理解概念  147
12.5.2  应用概念  148
12.5.3  深入学习  148
第13章 学无止境  149
13.1  自下而上  150
13.2  自顶向下  150
13.3  从中间开始  150
13.4  专题  151
13.5  汇编语言的更多资源  152
附录A  GUI编程  153
附录B  通用x86指令  165
附录C  重要的系统调用  172
附录D  ASCII码  174
附录E  汇编语言中的常用C语句  175
附录F  使用GDB调试器  183
附录G  文档历史  189
附录H  GNU自由文档许可协议  190
附录I  致谢  196
索引  197

作者简介

是否真正理解汇编语言,常常是普通程序员和优秀程序员的分水岭。《深入理解程序设计:使用Linux汇编语言》介绍了Linux平台下的汇编语言编程,教你从计算机的角度看问题,从而了解汇编语言及计算机的工作方式,为成就自己的优秀程序员之梦夯实基础。
很多人都认为汇编语言晦涩难懂,但New Medio技术总监Jonathan Bartlett的这本书将改变人们的看法。本书首先介绍计算机的体系结构,然后从编写简单程序开始,一步一步扩充函数、文件、读写处理等知识,并平滑过渡到程序共享、存储与优化,由浅入深地介绍了Linux汇编语言编程。作者不仅会带你了解向计算机传递信息的方式方法,还让你学会向修改和使用程序的人传递信息,并最终用自己的规则构建“世界”,按自己对问题的理解和解决方案创造“世界”。
主要内容:
计算机体系结构(详解内存及寻址方式);
编程初体验;
函数使用及复杂度处理;
文件处理及缓冲区分析;
记录读写及修改;
通过测试及错误处理打造健壮程序;
程序共享;
内存布局及处理;
计算机的计数原理;
程序优化(时机、位置及方式)。


 深入理解程序设计下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计5条)

  •     书很薄,适合入门或者对汇编不熟悉的人,定价高了,不建议购买。用同样的价格可以买更有价值的书籍。豆瓣字数限制是多少?豆瓣字数限制是多少?豆瓣字数限制是多少?豆瓣字数限制是多少?豆瓣字数限制是多少?
  •     书很薄,纸张很差,翻译的总体还可以,但是还是有些小问题,有些源代码地方都写错了,这里就不指出了,如果仔细看肯定能看到的,内容很基础,即时从来没接触过汇编的人也没什么压力,如果比较熟悉汇编的人就不建议买了,有点浪费,性价比不高..
  •     坦率地讲中文版翻译得还是可以的,除了少数自己造成的错误外,更多的还是原版就有的问题(真是原汁原味),原版作为免费公开版,好处不言而喻,大家一起来挑错,不断完善,我除了自己发现的少数几个外,更多的是来源于作者论坛里各路同学的提示,有些特后面的章节我因为还没有看到,所以少数勘误没有写上(都阅读完会更新),但大多数已经放到下面,英语好的同学可以进这个网站里面再看一看,特别指出的是最好中英文叠着看,英语好直接原文看。初次阅读的同学一定要先照着修改一下,省事儿不是:)作者论坛勘误区:https://savannah.nongnu.org/bugs/index.php英文免费公开版下载区:勘误--------------------------------------------------------------------------------------P2 倒数第2段网址“http://rute.sourceforge.net“已失效,更新为"http://rute.2038bug.com"P8 倒数第3段 “地址的长度也是4字节(1个字长)”关于这块论坛一位做老师的网友曾经提出异议,说他教的都是2个字节为1个字长;结果被某位调侃老古董,某位的解释是决定字长的不是定义,而是当时处理器寄存器的大小,16位的自然是2个字节为1个字长,而32位的自然是4个字节为1个字长。P8 第二大段中“65536”修改为“65535”P10 倒数第1段 ”在直接寻址中,我们将只加载值4;但在间接寻址中,我们会用4作为地址去寻找数据“,关于这段话,作者论坛已有网友指出其语义模糊让人感觉间接寻址更像是直接寻址了。而直接寻址更像立即数模式了;他建议这么说”在直接寻址中,我们使用一个立即数模式下的数字作为地址用于发现我们想要的数据;在间接寻址中,我们被装载进一个被作为指针的寄存器中的数字,去引导我们找到想要的数据“在此我把原书有歧义的句子和网友修改过的句子都给出,英语好的同学(我很差)相信能看懂。原文:In direct addressing, we would just load the value 4, but in indirect addressing, we use 4 as the address to use to find the data we want".修改:"In direct addressing, we use an immediate mode number as the address to use to find the data we want. In indirect addressing, we use the number stored in a register as a pointer to the data we want."P25 倒数第2行将 je end_loop 修改为 je loop_exitP36 第1段 第2行 修改为将栈指针%esp复制到%ebp (书中给写反了)P40 第1行 #将第1个参数放入%ebx (中文版和原版都写成了%eax)P41 第10、11行底数和指数位置写反了,对调一下才是正确的。指数 <--- 12(%ebp)底数 <--- 8(%ebp)P50 movl 500, %edx 和 movl 3, %eax 两个数字前都缺少了“$”,这个语句的错误之所以连原作者都没有发现,是因为这个段落仅仅是介绍,并没有实际编写程序P59 倒数第4段有一段话,如果你按照这段话进行测试,会发现结果是错误的。”当Linux程序开始时,所有指向命令行参数的指针都存储于栈中。参数数目存储于8(%esp),程序名存储于12(%esp),而参数存储于16(%esp)及其后的存储位置“实际上这段话并没有错误,测试出错的原因在于作者没有明确地指出这个Linux程序就是本章的范例,这个范例中在程序开始执行时就用"subl $ST_SIZE_RESERVE, %esp",为该程序留出了8个字节的存储空间,以此类推的话上面的说法才成立,实际上%esp是随需求不断变化的,而初学者(比如我)很容易把上面的话当成”放之四海而皆准“的真理。作者论坛已经有网友指出,应该用”参数数目存储于0(%ebp),程序名存储于4(%ebp),而参数存储于8(%ebp)及其后的存储位置“来将这个概念固定化。希望大家能够借此理解作者要表述的概念。P64 应注明读函数保存为read-record.s, 写函数保存为write-record.sP67 第14行 缺少一个标示符: file_name: P67 .globl _start 之前缺少.section .text , 作者的论坛有网友反映程序虽然能够正常使用,但是缺少这个伪指令会削弱调试能力,尤其是对gdb而言。P68 倒数第5行 应该是as write-records.s -o write-records.oP82 "jl continue_processing"修改为"jge continue_processing"用以表示如果返回值大于或等于0则说明没有错误,跳到继续运行标签处。P88 中间的自然段中出现了两处int,由于作者在之前多次定义了int是系统调用(interrupt),而针对此处的int表示的意思是(integer)也没有特别说明,所以大家要注意别犯晕,其实在P89页作者会说明的,只不过应该放到前面说更好。P177 中下部指令"movl %esp, $ebp"修改为"movl %esp, %ebp"P178 原来要表达的是C语言中的while语句,条件a<b就继续循环;那么在汇编语言中的条件判断就必须是jle loop_end, 而不是jge loop_end;当然该上一条为cmpl %eax, %ebx 为cmpl %ebx, %eax也行。--------------------------------------------------------------------------------------

精彩短评 (总计17条)

  •     第一次了解汇编语言,加深了c的理解
  •     脑子笨,能看书不能写程序,估计脑子有点毛病,得治
  •     要不是@ibuick 推荐,应该不会这么早看这本书。简单的讲了一些底层基础知识,大一CS专业学生完全可以在坑爹的导论课上看(我那时读CSAPP)。到“中间存储器”那章,想到大别的128G内存。又想到院长吹自己在国防科大时汇编写得多么的6。20151207
  •     因为对汇编并不感兴趣,所以只是匆匆浏览一下,书中附录推荐的一些计算机书籍阅读顺序很不错呦
  •     了解计算机是如何运行的
  •     例子简洁明了,用汇编也更加容易理解。“学无止境”这章还推荐了书目,太良心!
  •     还不错,对学习高级语言很有帮助
  •     还可以,写得浅显易懂,不过有些地方还有错,甚至有的代码也跑不过去,不打一遍还真不知道,不过如果理解了可以改对。该说的部分倒是也都说了。还是值得一读。
  •     以优雅的方式展现了汇编语言思维,原来读汇编程序也可以赏心悦目,最后一章《学无止境》推荐的书目值得关注。
  •     比较简单
  •     很难找到以AT&T语法讲Linux下汇编的书,然而此书又实在是太入门太浅了。。。。
  •     思路清晰,易读易懂,非常好的入门书籍。
  •     简明易懂的AT&T汇编入门书籍,将各种程序概念讲的通俗易懂,最后的推荐书单非常经典。英语CET4水平即可读懂英文版,中文版为《深入理解程序设计》
  •     入门书, 适合没有基础的读
  •     非常适合没汇编基础的人看,甚至没有编程基础
  •     不懂汇编,把代码全都跳过去了,内容其实很基础
  •     可以作为linux汇编联系手册,对学习32位汇编比较有帮助。
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024