x86指令集
Intel汇编语法
- 指令格式:
op dst, src
AT&T汇编语法
- 指令格式:
op src, dst
- 后缀,规定了指令操作的位宽:
b 字节(8位),对应于Intel的byte ptr w 字(16位),对应于Intel的word ptr l 双字(实际是表示long,32位),对应于Intel的dword ptr q 四字(64位),对应于Intel的qword ptr
操作对象
操作对象:
- 寄存器
- 常量
- 寄存器指向的内存
- 常量指向的内存
示例
AT&T syntax | "C"-ish equivalent | |
---|---|---|
movl %eax, %edx | edx = eax; | register mode |
movl $0x123, %edx | edx = 0x123; | immediate |
movl 0x123, %edx | edx = *(int32_t*)0x123; | direct |
movl (%ebx), %edx | edx = *(int32_t*)ebx; | indirect |
movl 4(%ebx), %edx | edx = *(int32_t*)(ebx+4); | displaced(偏移) |
指令分类
- 数据移动: MOV, PUSH, POP
- 算术运算: TEST, SHL, ADD, AND
- IO操作: IN, OUT
- 控制指令: JMP, JZ, JNZ, CALL, RET
- 字符串操作: REP, MOVSB
- 系统控制: IRET, INT