汇编语言很重要。高级语言作为入门,可以降低学习的门槛,并让学习者很快的做出东西出来,提高编程的信心。如果作为一个资深的程序员,学习汇编是不可缺少的,我这里说的汇编可不仅仅是8086汇编那么简单,还应该包括各个平台上的汇编语言。学习汇编语言的好处是让你了解你的高级语言是怎么运行的。对于普通的开发者而言,可能会觉得我不必关心我的代码在机器层面上是怎么运行的,只要代码正确就可以了,但实际上这样的做法并不可靠。原因有:1、编译器不可靠。2、高级语言有很多边界(也就是所谓的坑)。3、硬件未必可靠。因为编译器是人做的,高级语言是人设计的,硬件也是人做的,这些都完全正确是不可能的。编译器不管是MSVC还是GCC,都是有bug的。如果遇到编译器bug该怎么办?当然是要用汇编去确认到底是不是编译器的问题了。我自己就曾经遇到过编译器对某些特别复杂的宏展开出错,运行结果很古怪,这种情况下,只有汇编能定位问题。初学者很难碰到这些问题,但如果代码写多了,遇到点编译器问题或者硬件问题是很常见的。至于各种语言的“坑”,也只有汇编才能解释。比如著名的:int i = 3;
int a;a = i++ + i++ + i++;不同编译平台下结果是不同的,但为什么不同?必须通过反汇编才能看到,如果不懂汇编,那么对于这种问题只能知道“我不能这样写”,而无法理解“为什么不能这样写”。再比如,__cdecl和__stdcall究竟是什么区别,书上一般说是传参规则不同,好一点的会讲一下具体是怎么不同,但如果不懂汇编,不去反编译看一下,很难理解具体是怎么样的不同。高级语言告诉你计算机的世界是什么样的,汇编语言告诉你计算机世界为什么是这样的。
int a;a = i++ + i++ + i++;不同编译平台下结果是不同的,但为什么不同?必须通过反汇编才能看到,如果不懂汇编,那么对于这种问题只能知道“我不能这样写”,而无法理解“为什么不能这样写”。再比如,__cdecl和__stdcall究竟是什么区别,书上一般说是传参规则不同,好一点的会讲一下具体是怎么不同,但如果不懂汇编,不去反编译看一下,很难理解具体是怎么样的不同。高级语言告诉你计算机的世界是什么样的,汇编语言告诉你计算机世界为什么是这样的。
解决方案 »
- 怎样在edit组件里设置固定值,根据条件的不同?????菜鸟请教···
- 一个简单的Delphi问题!
- 执行插入操作的时候如何把字段''值改成null值
- 想在DBGrid中的某一个column中显示可选框
- 有个.DB的数据库用DELPHI自身带的PARARDOX打不开,为什么?
- |小女子想问:怎么把数据库内的内容保存为文本(TXT)文件;急!!!!!!!!
- 动态强制约束编程
- WebBrowser 如何实现自动登录
- 浮点数的小数位数总么控制的?
- 刚刚买了本<<delphi5.x分布是多层应用>>心理感觉怪怪的!?
- IdTCPClient任何接收服务器发送过来的数据
- 求助,用什么做GUIDE界面最简单,
看下这个:
https://bbs.csdn.net/topics/392663641