- 82
- 0
- 约2.06万字
- 约 20页
- 2016-03-12 发布于山西
- 举报
at
ATT 汇编语言与GCC 内嵌汇编简介
版本 0.1
时间 04/3/30
EMA IL chforest_chang@
1 ATT 与 INTEL 的 编语言语法的区别3
1.1 大小写3
1.2 操作数赋值方向3
1.3 前缀3
1.4 间接寻址语法4
1.5 后缀4
1.6 指令5
2 GCC 内嵌汇编 5
2.1 简介5
2.2 内嵌汇编举例5
2.3 语法7
2.3.1 编语句模板7
2.3.2 输出部分7
2.3.3 输入部分8
2.3.4 限制字符8
2.3.5 破坏描述部分14
2.4 GCC 如何编译内嵌汇编代码19
3 后记20
本节先介绍ATT 编语言语法与 INTEL 编语法的差别,然后介绍GCC 内嵌汇编语法。
阅读本节需要读者具有 INTEL汇编语言基础。
1 ATT 与 INTEL 的汇编语言语法的区别
1.1 大小写
INTEL格式的指令使用大写字母,而ATT 格式的使用小写字母。
例:
INTEL ATT
MOV EAX,EBX movl %ebx,%eax
1.2 操作数赋值方向
在 INTEL 语法中,第一个表示目的操作数,第二个表示源操作数,赋值方向从右向左。
ATT 语法第一个为源操作数,第二个为目的操作数,方向从左 右,合乎自然。
例:
INTEL ATT
MOV EAX,EBX movl %ebx,%eax
1.3 前缀
在 INTEL 语法中寄存器和立即数不需要前缀;ATT 中寄存器需要加前缀 “%”;立即数
需要加前缀 “$”。
例:
INTEL ATT
MOV EAX,1 movl $1,%eax
符号常数直接引用,不需要加前缀,如:movl value , %ebx,value 为一常数;在符
号前加前缀$表示引用符号地址, 如movl $value, %ebx,是将value 的地址放 ebx 中。
总线锁定前缀“lock”:总线锁定操作。“lock”前缀在Linux 核心代码中使用很多,特
别是SMP 代码中。当总线锁定后其它CPU 不能存取锁定地址处的内存单元。
远程跳转指令和子过程调用指令的操作码使用前缀 “l “,分别为 ljmp,lcall,与之
相应的返回指令伪 lret。
例:
INTEL ATT
CALL FAR SECTION:OFFSET lcall $secion:$offset
JMP FAR SECTION:OFFSET ljmp $secion:$offset
RET FAR SATCK_ADJUST lret $stack_adjust
1.4 间接寻址语法
INTEL 中基地址使用 “[”、“]”,而在ATT 中使用“(”、“)”;另外处理复杂操作数的
语法 也 不同 , INTEL 为 Segreg:[base+index*scale+disp] , 而在 ATT 中为
%segreg:disp(base,index,sale),其中segreg,index,scale,disp 都是可选的,在指定
index而没有显式指定Scale 的情况下使用默认值1。Scale 和disp 不需要加前缀 “”。
INTEL ATT
Instr
您可能关注的文档
- 802.11n技术白皮书-wifi.pdf
- 1997计算大气声学.pdf
- 2007金属学文档资料.pdf
- 2011官方wifi_protect_setup协议介绍.pdf
- 2011年9月二级vb真卷.pdf
- 2012消防防火墙验收细则.pdf
- 050929梭子鱼垃圾邮件防火墙技术白皮书.pdf
- 111109_地下层各功能区机电声学处理.pdf
- ab plc和vb客户端的通讯.pdf
- accuracy of iphone locations.pdf
- 03-2 2025年度民主生活会征求意见座谈会主持词.docx
- 03-1 2025年度民主生活会主持讲话提纲.docx
- 02-1 会前学习-《县以上党和国家机关党员领导干部民主生活会若干规定》相关要求.docx
- 在2025年度民主生活会上的总结讲话三篇.docx
- 在2025年度民主生活会上的总结讲话三篇 (3).docx
- 市委宣传部2025年度民主生活会查摆问题整改方案两篇.docx
- 在市行政审批和政务信息管理局机关2026年全体干部政绩观教育大会上的党课讲稿.docx
- X市应急管理局2026年度安全生产监督检查计划.docx
- 2025年度民主生活会领导班子对照检查材料(五个带头)三篇.docx
- 2025年度民主生活会“五个带头”个人对照检查材料三篇.docx
原创力文档

文档评论(0)