“-0x1(%edx,%ecx,1)”是什么意思objdump 输出中的意思是什么?

发布于 2024-08-13 15:38:37 字数 152 浏览 7 评论 0原文

使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

疾风者 2024-08-20 15:38:37

括号中是内存偏移量:

-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).

玩套路吗 2024-08-20 15:38:37

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

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

您可以在 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

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

You can lookup stuff like this at sandpile or in the intel/amd documentation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文