“-0x1(%edx,%ecx,1)”是什么意思objdump 输出中的意思是什么?
使用 objdump 来理解二进制文件,我意识到我对 ASM 语法不够流利。下面这个概念是什么意思?
xor %al,-0x1(%edx,%ecx,1)
当你在做的时候 - 我应该搜索什么才能找到有关这些概念的文档?
Using objdump to understand a binary and I realize I'm not fluent enough in ASM syntax. What does the following notion mean?
xor %al,-0x1(%edx,%ecx,1)
And while you're at it - what should I search for in order to find docs about such notions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
括号中是内存偏移量:
-0x1(%edx,%ecx,1)
(AT&T 语法)等于[edx+ecx*1-1]
( Intel 语法)AT&T 汇编语法 快速指南(根据您的要求)。
The parentheses are memory offsets:
-0x1(%edx,%ecx,1)
(AT&T syntax) is equal to[edx+ecx*1-1]
(Intel syntax)Quick guide for AT&T assembly syntax (as per your request).
这是“a”寄存器的低字节 (%al) 内容与 32 位宽寄存器“d”(%edx)、“c”地址之和的内存内容的异或。 ' 乘以 1 (%ecx,1) 和 -1。结果写回到%al。在 C 语言中,
您可以在 sandpile 或 intel/amd 文档中查找类似的内容。
This is an exclusive or with content of the low byte (%al) of the 'a' register and the content of the memory at the address which is the sum of the 32 bit wide registers 'd' (%edx), 'c' multiplied by 1 (%ecx,1) and -1. The result is written back to %al. In C
You can lookup stuff like this at sandpile or in the intel/amd documentation.