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

参考:http://oss.org.cn/kernel-book/ch02/2.6.2.htm

http://www.kerneltravel.net/chenlj/lecture6.pdf

http://blog.csdn.net/kevinshq/article/details/8228810  GNU汇编风格

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值