让汇编揭开死循环的神秘面纱
敬业的IT人
互联网
佚名
2008-2-20 20:04:07
- 磁盘阵列(Disk Array)原理
有的时候,也许我们会面对一些令自己无法解释的问题。在语言本身无法告诉我们原因的时候,从汇编的层面看问题,可能就会有“柳暗花明又一村”之效。
首先请大家看这么一个简单的小程序:
让我来解释一下这段汇编代码的含义吧。在系统的实现中,i和数组b[10]是分配在栈上的变量,在内存中的分布如下图:

现在你看到了,i所占据的正是b[10]的位置,而b[10] = 0;这一句会被这样运行:
*(&b[0] + 10) = 0;
所以这一句的结果,就是把0赋值给i。这样一来在第11次循环的时候,i将会被重新置为0,那么循环结束的条件也就永远不会满足了,循环也就是个死循环了。
事实上单单讨论C语言的内部实现并没有什么意义,而且这样书写的循环在程序设计中也绝对不能够出现。所以我所想要讨论的,就是如何让汇编帮助我们解决表面上无法看清楚的东西,仅此而已。
文字:http://www.qqread.com/other-devtool/s564110002.html进入讨论组讨论。- 最新文章
- 七年前的Google什么样?[02-20]
- 关于网络安全方面的岗位面试题目[02-20]
- Hidden Users on Windows[02-20]
- 苏睿暄Sql worm 2的源代码[02-20]
- SSL/TLS/WTLS原理[02-20]
- Linux编程之库的知识(汇总)[02-20]
- 相关文章
- 汇编指令与机器码的相互转换[02-19]
- 举例说明在汇编语言中,"[]&qu..[02-19]
- 自己用汇编语言写的一个病毒(源码)[02-19]
- 获得操作系统版本的汇编源代码[02-19]
- 汇编语言制作的光带菜单及源程序(1.0)[02-19]
- 汇编源码--sertype[02-19]
