C到汇编的详细讲解
汇编揭秘C语言中的参数传递问题[zz]
文章作者:cook702
很多学习汇编的朋友想必对C也比较了解,因为在当前大学的课程体系里,它很有可能就是你接触到的第一门编程语言。由于对计算机的理解不够,学习时必定会遇
到各种问题。有些问题是你通过思考就可以解决的,而更多的问题则是你无从思考,就好像它天生就是这样,你只要记住就OK了。然而这样的学习方式是机械的,
更是没有创造力的。只有真正理解了C语言,你才有能力去驾驭它,否则它和你之间永远会隔着一层窗户纸,虽然很薄,但是你永远也捅不透。这是为什么呢?其实
道理很简单,就好比在一个公司有现成的代码库可以调用,有的程序员遇到问题时,他唯一可作的就是调用代码库中的功能模块,完事后就万事大吉。而有的程序员
则是只要有时间宁可自己实现。即使没有时间,调用完代码库中的功能模块,他还会想,如果是自己,这个功能应该如何实现,代码库中的模块是否有不妥之处,进
而对其功能不断进行改进和完善。这可能就是专业和非专业的重要区别。而那些不善于思考的程序员,将来很有可能就会成为我们眼中的“代码工人”。
那么如何才能真正理解C语言呢?答案就是汇编。汇编指令是机器指令的助记符表示,任何高级语言要想被计算机执行,都必须转化为一条条的机器指令,而它又与
汇编指令一一对应,通过分析汇编指令,就能真正理解C语言在计算机中的运行机理,只有这样才算真正掌握了C语言,然而如何通过汇编指令分析C语言,很多朋
友还不是很熟悉,或者根本就不知道。在有些人的脑子里,C语言是直接被CPU执行的,根本就不会想到还有汇编这一层。而对汇编只是懂点皮毛的,此时也只能
是心有余而力不足。在此,我就用汇编语言来揭开C语言参数传递的真正面纱。首先我们来写一个最简单的C语言源程序t.c如下:
main(){}
然后我们在Turboc集成开发环境下生成可执行文件t.exe,接着我们用debug命令加载此文件,查看里面的汇编代码后发现
C:\c>debug t.exe
-u
0C1C:0000 BA720C MOV DX,0C72
0C1C:0003 2E CS:
0C1C:0004 8916F801 MOV [01F8],DX
0C1C:0008 B430 MOV AH,30
0C1C:000A CD21 &nbs
相关文档:
左值性(lvalueness)在C/C++中是表达式的一个重要属性。只有通过一个左值表达式才能来引用及更改一个对象(object)的值。(某些情况下,右值表达式也能引用(refer)到某一个对象,并且可能间接修改该对象的值,后述)。
何谓对象?如果没有明确说明,这里说的对象,和狭义的类/对象(class/object) ......
之前的定位可能主要为了研究底层及一些较复杂的问题上,而忽略了一些初学的朋友。导致他们可能一进来就有点“望而生畏”的感觉(自诩了哈,拍砖!)。应怪兽群里兄弟及一些朋友的建议,同时也为了把自己的经验及编程方面的一些想法分享给大家。因此打算写一些CC++语言基础入门的博文。
从本模块中,大家可以了解 ......
http://www.teecool.com/post/2007081104.html
内容摘要:1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分)
int a = 4;
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);
关键词:C语言面试题 C++面试题 华为面试题
本文地址:http:// ......
/*****************************************************
文件:main.c
功能:测试运行时间(C)!
作者:chinayaosir QQ:44633197
工具:VC++6.0编译OK!
日期:11/28/2009
代码目录:
//1.包含头文件
//2.main主程序
//不同的算法实现的性能,运行时间相差非常大的!
修改列表:
***************** ......