【发布时间】:2014-11-27 17:35:59
【问题描述】:
我正在阅读一些汇编代码,试图弄清楚它在做什么(这是一个挑战,所以没有恶意)。 在一行中有以下指令:
cmp d,[eax],0DADADADA
我在 Google 上花了很长时间,但无法弄清楚这一点,我知道您无法比较 3 个值,所以我知道 0DA.... 部分是我所缺少的。我发现了一些我无法再次找到的文章,这表明这与填充空白内存有关,但不确定,我们将不胜感激。
【问题讨论】:
-
这很可疑。
cmp正好有 2 个输入操作数,它隐式地将状态标志设置为唯一的输出。另外,0DADADADA看起来也很糟糕:前导零应该将其识别为八进制数,而数字显然是十六进制。 -
前导零将其标识为数字;是否为八进制是汇编器定义的问题,这显然是一个十六进制常量。
-
@IraBaxter:嗯,通常十六进制文字以
0x...为前缀,而八进制文字则以零开头。这个问题可能与使用不同约定的汇编器有关,但没有提到确切的汇编器。 -
@EOF:“没有提到确切的汇编程序”。这就是重点。
-
@IraBaxter: ...在那种情况下,我会假设正常的约定,并提到这很奇怪。
标签: assembly