【发布时间】:2023-03-19 07:00:01
【问题描述】:
对于这个新手问题,我很抱歉,但奇怪的是我找不到这个问题的正确答案。简单地说,假设我想从某个变量移动到 %ecx 寄存器。这个变量是一个充满输入的缓冲区。如何在特定偏移量处引用缓冲区,即缓冲区 + 1 或缓冲区 + n?我需要它来进行基本的字符串迭代。
感谢所有帮助,即使它只是帮助我找到以前的帖子来回答它但我找不到。
【问题讨论】:
-
这不是您要询问的寄存器,而是一个变量。你引用它的方式和你展示的完全一样:
movl buffer + 1, %ecx。如果偏移量不是恒定的,则将其加载到寄存器中并使用movl buffer(%eax), %ecx之类的东西。这是您应该阅读一些介绍性材料的基本知识。 PS:对于字符串,您可能想要使用 8 位目标或movzbl/movsbl。 -
@Jester 首先,我没有任何合适的介绍性材料,我拥有的一本关于汇编的书是 x86 架构的。所以它实际上只是 [variableName] + [offset]?
-
您应该小心
[]符号,因为它在 intel 语法中有其自身的含义。我已经向您展示了示例,这就是它的外观。另请参阅as manual。 -
请不要删除架构标签。
-
这也适用于 x86 吗?如果是这样,我没有问题,但问题是关于 GAS 组装。
标签: assembly x86 offset gnu gnu-assembler