汇编语言的优点是速度快,可以直接对硬件进行操作,这对诸如图形处理等关键应用是非常重要的。Linux 是一个用 C 语言开发的操作系统,这使得很多程序员开始忘记在 Linux 中还可以直接使用汇编这一底层语言来优化程序的性能。本文为那些在Linux 平台上编写汇编代码的程序员提供指南,介绍 Linux 汇编语言的语法格式和开发工具,并辅以具体的例子讲述如何开发实用的Linux 汇编程序。
| AT&T 格式 | Intel 格式 |
| pushl %eax | push eax |
| AT&T 格式 | Intel 格式 |
| pushl $1 | push 1 |
| AT&T 格式 | Intel 格式 |
| addl $1, %eax | add eax, 1 |
| AT&T 格式 | Intel 格式 |
| movb val, %al | mov al, byte ptr val |
| AT&T 格式 | Intel 格式 |
| ljump $section, $offset | jmp far section:offset |
| lcall $section, $offset | call far section:offset |
| AT&T 格式 | Intel 格式 |
| lret $stack_adjust | ret far stack_adjust |
|
|
|
| AT&T 格式 | Intel 格式 |
| movl -4(%ebp), %eax | mov eax, [ebp - 4] |
| movl array(, %eax, 4), %eax | mov eax, [eax*4 + array] |
| movw array(%ebx, %eax, 4), %cx | mov cx, [ebx + 4*eax + array] |
| movb $4, %fs:(%eax) | mov fs:eax, 4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 限定符 | 意义 |
| "m"、"v"、"o" | 内存单元 |
| "r" | 任何寄存器 |
| "q" | 寄存器eax、ebx、ecx、edx之一 |
| "i"、"h" | 直接操作数 |
| "E"和"F" | 浮点数 |
| "g" | 任意 |
| "a"、"b"、"c"、"d" | 分别表示寄存器eax、ebx、ecx和edx |
| "S"和"D" | 寄存器esi、edi |
| "I" | 常数(0至31) |
| 欢迎光临 DIY编程器网 (http://diybcq.com/) | Powered by Discuz! X3.2 |