AT&T汇编语言格式详解:OS开发必备知识

需积分: 1 0 下载量 174 浏览量 更新于2024-07-21 收藏 89KB PDF 举报
AT&T汇编语言格式 AT&T汇编语言格式是OS开发工具GCC和GAS所支持的汇编语言语法,了解AT&T汇编语言语法对于OS开发来说是非常重要的。以下是AT&T汇编语言格式的知识点: **寄存器引用** 在AT&T汇编语言中,引用寄存器需要在寄存器号前加百分号%,例如“movl %eax, %ebx”。80386处理器有多种寄存器,包括: * 8个32-bit寄存器:%eax, %ebx, %ecx, %edx, %edi, %esi, %ebp, %esp * 8个16-bit寄存器:%ax, %bx, %cx, %dx, %di, %si, %bp, %sp(实际上是上面8个32-bit寄存器的低16位) * 8个8-bit寄存器:%ah, %al, %bh, %bl, %ch, %cl, %dh, %dl(实际上是寄存器%ax, %bx, %cx, %dx的高8位和低8位) * 6个段寄存器:%cs, %ds, %ss, %es, %fs, %gs * 3个控制寄存器:%cr0, %cr2, %cr3 * 6个debug寄存器:%db0, %db1, %db2, %db3, %db6, %db7 * 2个测试寄存器:%tr6, %tr7 * 8个浮点寄存器栈:%st(0), %st(1), %st(2), %st(3), %st(4), %st(5), %st(6), %st(7) **操作数顺序** 在AT&T汇编语言中,操作数的顺序是从源(左)到目的(右),例如“movl %eax, %ebx”。 **立即数** 在AT&T汇编语言中,使用立即数需要在数前面加符号$,例如“movl $0x04, %ebx”。也可以使用变量,例如: ``` para = 0x04 movl $para, %ebx ``` 这样指令执行的结果是将立即数04h装入寄存器%ebx。 了解AT&T汇编语言格式对于OS开发来说是非常重要的, GCC和GAS都支持这种汇编语言语法。