汇编语言的优点是速度快,可以直接对硬件进行操作,这对诸如图形处理等关键应用是非常重要的。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 |