C语言GNU中汇编文件.s与.S的差异

Posted 从善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言GNU中汇编文件.s与.S的差异相关的知识,希望对你有一定的参考价值。

本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。


博客内容主要围绕:
       5G/6G协议讲解
       算力网络讲解(云计算,边缘计算,端计算)
       高级C语言讲解
       Rust语言讲解

文章目录

GNU中汇编文件.s与.S的差异

今天下午学习ARM64汇编时,写了一段汇编程序,使用gcc编译总是说我没有定义 MY_LABEL,


问题代码如下,

#define MY_LABEL 0x20

.section .data

.section .text
.globl main
main:
        ldr x7,=MY_LABEL
        ret

问题出在文件名上

下面是GNU手册中的描述,

file.s Assembler code.

file.S
file.sx Assembler code that must be preprocessed.

问题找到了,因为我的文件名是 .s后缀 ,所以GNU编译器不会对汇编文件中的 #include、#if、#elif、#else、#endif、#define这些预处理指令做解析

将文件名换成 .S后缀或者 .sx后缀,问题解决了,编译成功。



这里是从善若水的博客,感谢您的阅读📕📕📕



以上是关于C语言GNU中汇编文件.s与.S的差异的主要内容,如果未能解决你的问题,请参考以下文章

关于ARM中汇编与C程序的混合编程的参数传递问题!

IDA PRO中汇编结构体识别

IDA PRO中汇编结构体识别

IDA PRO中汇编结构体识别

编程计算 S=1+2+4+8、、、、、、、、、 (100项) 用汇编或C语言 选啥数据类型呀?

小白求教 为啥我在命令行中汇编*.asm文件时总是打开PROTEL软件呢?