GNU汇编中的#define等宏定义解释
在Linux源代码中,以.S为扩展名的⽂件是“纯”汇编语⾔的⽂件。这⾥,我们结合具体的例⼦再介绍⼀些AT&T汇编语⾔的相关知识。
1.GNU汇编程序GAS(GNU Assembly和连接程序
当你编写了⼀个程序后,就需要对其进⾏汇编(assembly)和连接。在Linux下有两种⽅式,⼀种是使⽤汇编程序GAS和连接程序ld,⼀种是使⽤gcc。我们先来看⼀下GAS和ld:
GAS把汇编语⾔源⽂件(.o)转换为⽬标⽂件(.o),其基本语法如下:
as filename.s -o filename.o
⼀旦创建了⼀个⽬标⽂件,就需要把它连接并执⾏,连接⼀个⽬标⽂件的基本语法为:
ld filename.o -o filename
这⾥ filename.o是⽬标⽂件名,⽽filename 是输出(可执⾏) ⽂件。
GAS使⽤的是AT&T的语法⽽不是Intel的语法,这就再次说明了AT&T语法是Unix世界的标准,你必须熟
悉它。
如果要使⽤GNC的C编译器gcc,就可以⼀步完成汇编和连接,例如:
gcc -o example example.S
这⾥,example.S是你的汇编程序,输出⽂件(可执⾏⽂件)名为example。其中,扩展名必须为⼤写的S,这是因为,⼤写的S可以使gcc⾃动识别汇编程序中的C预处理命令,像#include、#define、#ifdef、 #endif等,也就是说,使⽤gcc进⾏编译,你可以在汇编程序中使⽤C的预处理命令。
重点是:我们的汇编程序的后缀必须.S 注意是⼤写S,不是⼩写s
gnu编译器
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论