GCC(GNU Compiler Collection,GNU编译器套件),是由陆氏 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。
GCC原本作为GNU *** 作系统的官方编译器,现已被大多数类Unix *** 作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布。
GCC功能与作用:
1、预处理
命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。
2、编译
用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。
3、连接
当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到毁悉胡合适的地方。
4、汇编
汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。
GCC在执行编译工作的时候,总共需要4步:
1、预处理,生成 .i 的文件[预处理器cpp]
2、将预处理后的文件转换成汇编语言, 生成文件 .s [编译器egcs]
3、有汇编变为目标代码(机器代码)生成 .o 的文件[汇编器as]
4、连接目标代码, 生成可执行程序 [链接器ld]
常用选项
-ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色, 例如 asm 或 typeof 关键词。
1、-c:只编译并生成目标文件。
2、-DMACRO:以字符串"1"定义 MACRO 宏。
3、-DMACRO=DEFN:以字符串"DEFN"定义 MACRO 宏。
4、-E:只运行 C 预编译器。
5、-g:生成调试信息。GNU 调试器可利用该信息。
6、-IDIRECTORY:指定额外的头文件搜索路径DIRECTORY。
7、纤拦-LDIRECTORY:指定额外的函数库搜索路径DIRECTORY。
8、-lLIBRARY:连接时搜索指定的函数库LIBRARY。
9、-m486:针对 486 进行代码优化。
根据您提供的凯带代码,这是一个包含汇编旅孙慧指令的C程序。其中的汇编指令是使用GCC内联汇编语法嵌入到C代码中的。您所说的“输出约束”通常是指将汇编指令执行结果写入C程序中的变量中。在这个例子中,确实没有在汇编代码中使用输出约束。
这是因为这段汇编代码并没有产生任何输出拆答,它只是简单地将数组a中的每个元素乘以2,并将结果存储在数组b中。因此,在这种情况下,没有必要使用输出约束。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)