【问题标题】:What does "-0x1(%edx,%ecx,1)" mean in objdump output?objdump 输出中的“-0x1(%edx,%ecx,1)”是什么意思?
【发布时间】:2009-12-09 20:54:39
【问题描述】:

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

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

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

【问题讨论】:

  • 注意,我确实知道 xor 是什么意思 ;),我只是不明白括号表达式。

标签: assembly objdump


【解决方案1】:

括号是内存偏移量:

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

AT&T assembly syntax 快速指南(根据您的要求)。

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 2014-01-07
    • 2014-03-10
    • 2011-02-22
    • 1970-01-01
    相关资源
    最近更新 更多