我是靠谱客的博主 高挑哑铃,最近开发中收集的这篇文章主要介绍AT&T格式汇编,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

阅读linux内核源代码时,底层的汇编语言格式使用的是AT&T。AT&T汇编语言格式和我们熟悉的intel的汇编很类似,但是也有很大的不同地方。现将常用的AT&T格式的语法列出如下。

1:寄存器应用
    寄存器前加%,如mov %eax, %ebx

2:操作数顺序
    操作数的排列从左到右为源到目的,如如mov %eax(源),%ebx(目的)

3:常数/立即数的格式
    立即数前加$,如mov$4, %ebx (把立即数4复制到ebx寄存器中)
    符号常数直接应用,如mov vaule, %ebx
    应用符号地址在符号前加$,如mov $value, %ebx

4:操作数的长度
    在指令后的符号表示
    b(byte), w(word), l(long), 如movw %ax, %bx

5:绝对转移和调用指令(jmp/call)操作数前加上*,作为前缀

6:远程转移和调用指令为ljmp,lcall.(intel汇编则为jmp far, call far)
    ljmp $section, $offset
     lcall $section, $offset  
7.远程返回指令
    iret $stack_adjust
8:寻址方式
    section:disp(base, index, scale)-------base+index*scale+disp
    而intel格式为section:[base + index*scale +disp]
    AT&T格式                                             intel格式
    movl -4(%ebp), %eax                           mov eax, [ebp-4]
    movl arry(, %eax, 4), %eax                    mov eax, [arry+eax*4]
    movb $4, %fs:(%eax)                            mov fs:eax, 4
9:c语言中嵌入汇编的格式
    _asm_("asm statement": outputs :inputs : registers-modified);


最后

以上就是高挑哑铃为你收集整理的AT&T格式汇编的全部内容,希望文章能够帮你解决AT&T格式汇编所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部