寄存器:
通用寄存器:EAX,EBX,ECX,EDX, 用于操作数据;
AX,BX,CX,DX,寄存器的16位版本;
AH,BH,CH,DH,AL,BL,CL,DL寄存器的8位高位和低位字节;
段寄存器:CS,SS,DS,ES,FS,GS,16位寄存器,存放着,内存地址的前半部分;存放着指向代码,栈和额外数据段的指针
偏移寄存器:EBP,指向函数的本地环境的起始位置; ESI,存放着使用内存块的操作中的源数据的偏移
EDI,存放着使用内存块的操作中目的数据偏移; ESP,指向栈顶的指针;
特殊寄存器:EFLAGS标志寄存器.CPU用来跟踪逻辑结果和处理器的状态;
EIP 指向要执行的下一条指令的地址
AT&T:
主要由GNU汇编器,gcc编译器条件中,Linux通常会使用这种形式.
NASM:
NASM格式许多用于windows汇编器和调试器.
这两种生成机器语言是完全一样的,只是在风格上存在一些差异;
语法格式:
NASM语法 mov eax,51h; AT&T语法:Movl $51h, %eax;
NASM是前面是寄存器,后面是数据,AT&T是数据在前数据,后面是寄存器;
AT&T在寄存器前面使用%符号,NASM不需要.
AT&T数据前面使用$符号,NASM不需要.
AT&T处理内存引用的方式与NASM不同.