GNU 汇编中的#define 等宏定义解释
来源:互联网 发布:mac 不生成 ds store 编辑:程序博客网 时间:2024/05/01 18:44
在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汇编风格
- GNU 汇编中的#define 等宏定义解释
- ARM GNU 汇编宏定义
- #define宏定义中的#,##,@#,\
- define宏定义中的#,##
- #define宏定义中的#,##,@#,\
- define宏定义中的#,##,/符号
- #if#ifdef#define等宏定义使用
- nasm汇编中的宏定义
- define宏定义中的#,##,@#及/符号
- define宏定义中的#,##,@#及/符号
- define宏定义中的#,##,@#及/符号
- define宏定义中的#,##,@#及/符号
- define宏定义中的#,##,@#及/符号
- define宏定义中的#,##,@#及\符号
- define宏定义中的#,##,@#及\符号
- define宏定义中的#,##,@#及\符号 .
- C语言中的宏定义 #define
- define宏定义中的#,##,@#及/符号
- 贫血模型和充血模型
- oracle数据库导入导出命令!
- python实现局域网ip地址扫描
- Object-C 协议@protocol
- 增大view的有效区域
- GNU 汇编中的#define 等宏定义解释
- Android可穿戴联盟来袭,苹果还在“憋大招”!
- linux下svn命令使用大全
- APK 安装过程 及 原理 详解
- Eclipse 无法打断点问题-遇到带斜杠的断点图标
- Oracle 判断 并 手动收集 统计信息 脚本
- UISlider常用操作
- Unrecognized Windows Sockets error: 0: JVM_Bind 异常解决办法
- pthread_detach(pthread_self());用法举例