- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
.3GCCInlineASM
GCC支持在C/C++代码中嵌入汇编代码,这些汇编代码被称作GCCInline
ASM一一GCC内联汇编。这是一个特别有用的功能,有利于我将一些C/C++语法无法
表达的指令干脆潜入C/C++代码中,另外也允许我干脆写C/C++代码中运用汇编编写
简洁高效的代码。
1.基本内联汇编
GCC中基本的内联汇编特别易懂,我先来看两个简洁的例子:
_asm_(movl%esp%eax);//看起来很熟识吧!
z
或者是
一asm—(
movl$l%eax//SYS_exit
xor%ebx%ebx
int$0x80
);
或
_asm_(
n
movl$l%eax\r\t\
z
xor%ebx%ebx\r\t\
z
int$0x80\
);
基本内联汇编的格式是
_asm____volatile—(InstructionList);
_asm—
asm—是GCC关键字asm的宏定义:
#defineasmasm
_asm_或asm用来声明一个内联汇编表达式,所以任何一个内联汇编表达式都是以它
开头的,是必不行少的。
2、InstructionList
InstructionList是汇编指令序列。它可以是空的,比如:_asm____volatile—(•);或
_asm_都是完全合法的内联汇编表达式,只不过这两条语句没有什么意义。但并
非全部InstructionList为空的内联汇编表达式都是没有意义的,比如:—asm—
(:::memory);就特别有意义,它向GCC声明:”我对内存作了改动〃,GCC在编译
的时候,会将此因素考虑进去。
我看一看下面这个例子:
$catexamplel.c
intmain(int_argcchar*_argv[])
z
int*_p=(int*)—argc;
(*_p)=9999;
//_asm_::memory);
if((*_p)==9999)
return5;
return(*—p);
)
在这段代码中,那条内联汇编是被注释掉的。在这条内联汇编之前,内存指针_p所指向
的内存被赋值为9999随即在内联汇编之后,一条If语句推断_p所指向的内存与9999
是否相等。很明显,它是相等的。GCC在优化编译的时候能够很聪慧的发觉这一点。我
运用下面的吩咐行对其进行编译:
$gcc-0-Sexamplel.c
选项-0表示优化编译,我还可以指定优化等级,比如-02表示优化等级为2;选项5表
示将C/C++源文件编译为汇编文件,文件名和C/C++文件一样,只不过扩展名由.c变
为
我来查看一下被放在examplel.s中的编译结果,我这里仅仅列出了运用gcc2.96
在redhat7.3上编译后的相关函数部分汇编代码。为了保持清晰性,无关的其它代码未被
列出。
$catexamplel.s
main:
pushl%ebp
movl%esp%ebp
z
movl8(%ebp)%eax#int*—p=(int*)—argc
z
movl$9999(%eax)#(*—p)=9999
movl$5%eax#
您可能关注的文档
最近下载
- 肿瘤科护理一科一品成果.pptx VIP
- 华为DSTE战略管理体系完整版1.pptx VIP
- 喷锚支护计算书.doc VIP
- 2025新修订《治安管理处罚法》应知应会100题(含答案+解析).pdf
- 新外研版必修三单词默写表(附参考答案).docx VIP
- 《制冷和空调设备基础与技能》单元2 全封闭活塞式制冷压缩机的拆卸、检测与维修 教学课件.pptx VIP
- 《万以内数的认识:整理和复习》教学设计-2025-2026学年人教版(新教材)小学数学二年级下册.docx
- JHD系列商业卫星用56Gbps矩形高速IO连接器.pdf VIP
- EtherCAT总线在运动控制系统的应用.ppt VIP
- 2026届湖南省衡阳市第一中学物理高二上期末监测试题含解析.doc
原创力文档


文档评论(0)