0

我正在查看一段汇编代码,但我一直在试图理解某些东西:

incl (%ebx, %eax, 4)

这究竟是做什么的?我尝试将它插入一个.s文件并编译然后观察 GDB 中的寄存器,但是当它在我设置ebx为地址并设置eax为 1 之后通过指令时它什么也没改变......我猜我不明白如何正确使用它。任何人都可以帮忙吗?

4

2 回答 2

2

它不是增加寄存器;它正在递增根据指令中寄存器的内容计算的内存位置。

于 2013-11-07T03:12:25.947 回答
0

我建议不要使用 GAS 和 AT&T 语法。它的发明是为了混淆语法并使其不清楚且对初学者没有吸引力。

创建此语法以供 HLL 编译器的后端使用。用它进行人类编写的编程是一种受虐狂。

即使是我(有 25 年的汇编编程背景)也几乎无法识别正常的指令:

    inc dword [ebx+4*eax] 
; increment a double word at memory address (ebx+4*eax)

请改用FASM。它具有清晰、以人为本的语法,最适合手写汇编程序。

于 2013-11-07T05:45:39.700 回答