2

使用 objdump 来理解二进制文件,我意识到我对 ASM 语法不够流利。下面的概念是什么意思?

xor    %al,-0x1(%edx,%ecx,1)

当你在做的时候——我应该搜索什么才能找到关于这些概念的文档?

4

2 回答 2

9

括号是内存偏移量:

-0x1(%edx,%ecx,1)(AT&T 语法)等于[edx+ecx*1-1](Intel 语法)

AT&T 汇编语法快速指南(根据您的要求)。

于 2009-12-09T21:04:00.673 回答
3

这是 'a' 寄存器的低字节 (%al) 的内容和地址处的内存内容的异或,该地址是 32 位宽寄存器 'd' (%edx), 'c ' 乘以 1 (%ecx,1) 和 -1。结果被写回 %al。在 C 中

al ^= (char*)(edx+ecx*1 - 1);

您可以在sandpile或 intel/amd 文档中查找此类内容。

于 2009-12-09T21:03:31.127 回答