我试图理解汇编语言如何适用于微计算机体系结构类,并且我在示例中仍然面对不同的语法:
sub $48, %esp
mov %eax, 32(%esp)
这些代码是什么意思?什么是32操作数和esp寄存器的添加?
Nec*_*lis 24
该$前缀是立即数(常数),并且%前缀为寄存器(它们需要1).
欲了解更多有关AT&T语法,也看到了[att]标签的wiki.
1除非noprefix指定了选项,否则请参阅此处和此处.但通常noprefix只用于.intel_syntax noprefix获得类似MASM的语法.
与Intel语法相比,AT&T语法有很多不同
$表示常量(整数文字)。没有它,数字是绝对地址% 表示一个寄存器()用于内存引用,就像[]在 Intel 语法中一样所以上面的片段相当于
sub esp, 48         ; esp -= 48
mov [esp+32], eax   ; store eax to the value at the address `esp + 32`