第六期 后记
   作者:Zoologist 于2008-1-17上传 

   最近帮别人看一个奇怪的问题,他用TC+Masm写了一段非常简单的程序。

C程序中定义了 int i,j 两个变量。之后的程序段中使用i做一个循环,

在循环的末尾再输出i却无法得到正确的值。但是如果在输出之前,

再调用i的值,比如输出一次,或者做点简单的运算什么的结果又会正常。

最终,我在汇编语言级找到了答案:原来是TC的“优化”在作怪

前面那种情况中,编译器会使用si来保存i的值,他的代码在循环中会

调用汇编语言编写的程序段,改变了si;而当我们在程序中再调用i的

时候,编译器则会使用内存来保存i的值,这样就不会因为si的改变而

影响到i的值了。这就是奇怪现象的由来。

ps: 编译tc程序的时候,可以使用  tcc -S 文件名来生成对应的asm代码,方便debug。

特别鸣谢:Aogo
感    谢:yuexidong投稿 Cham投稿 Aogo投稿 wHt编写卷首语

2008年1月16日
                                             

<<<上一篇
欢迎访问AoGo汇编小站:http://www.aogosoft.com