我正在查看一段汇编代码而我正试图理解某些事情:
incl (%ebx, %eax, 4)
这到底是做什么的?我尝试将其插入.s
文件并编译然后在GDB中查看寄存器,但是当我将ebx
设置为地址并将eax
设置为1后它通过了指令时它没有改变任何内容......我猜我不明白如何正确使用它。有人可以帮忙吗?
答案 0 :(得分:2)
它没有递增寄存器;它正在递增根据指令中寄存器内容计算的存储单元。
答案 1 :(得分:0)
我建议不要使用GAS和AT& T语法。它是为了模糊语法并使其对初学者不清楚和缺乏吸引力而特别发明的。
创建此语法以供HLL编译器的后端使用。人类用它编写的程序设计是一种受虐狂。
即使我(拥有25年的汇编编程背景)也几乎无法识别正常的指令:
inc dword [ebx+4*eax]
; increment a double word at memory address (ebx+4*eax)
请改用FASM。它具有明确的,以人为中心的语法,最适合手写的汇编程序。