线的反汇编不会生成汇编指令

时间:2014-03-07 19:42:16

标签: c

运行我的代码并单步执行后,我发现跳过以下两行:

cCheck_sum = '\0';
cpInternal = &cpData[0];

如果我回到我的代码并反汇编它,我发现编译器不会为它生成汇编指令。我知道有时编译器会认为这些行不会影响前面的代码并跳过它,但我不知道是否是这种情况我需要初始化变量,因此它必须逐步执行它。

我正在使用FreeScale CodeWarrior编译器IDE 5.9.0

谢谢你, 尼尔

2 个答案:

答案 0 :(得分:2)

编译器可能会对您的代码进行一些优化。此document表示(在页面145中)对您正在使用的编译器存在此类优化(如果我找到了正确的引用:P)。它还说明了如何在IDE中禁用这些优化,或者在代码中添加#pragma

似乎可以通过“[...> 全局优化设置面板”来控制优化。

答案 1 :(得分:0)

编译器可以自由地移动代码,将行拆分并交错执行,只留下无效的指令(或其效果不明显,即将值赋值给变量,而不使用它作为符号一个新的)。如果您设置了一个值,编译器将假定该值保持到下一个asignment,并且可能使用该知识来简化表达式,甚至可以推断出某些分支从未被采用。步骤虽然在调试器中使用高(呃)优化级别编译的程序可以很有趣; - )