c语言编译器自带宏定义,【博文精选】如何向riscv-gcc中增加编译器内置宏

原标题:【博文精选】如何向riscv-gcc中增加编译器内置宏

riscv-gcc工具,有内置的一些宏参数。我们可以根据这些内置的宏参数,判断编译器的行为。

一、查看gcc内置宏参数

这里以芯来科技发布的riscv-nuclei-elf-gcc工具链为例。

使用以下命令,可以得到该工具的内置宏参数:

riscv-nuclei-elf-gcc -E -dM a.h | grep riscv

可以得到如下的一些宏参数

#define __riscv 1

#define __riscv_atomic 1

#define __riscv_cmodel_medlow 1

#define __riscv_fdiv 1

#define __riscv_float_abi_double 1

#define __riscv_flen 64

#define __riscv_compressed 1

#define __riscv_mul 1

#define __riscv_muldiv 1

#define __riscv_xlen 32

#define __riscv_fsqrt 1

#define __riscv_div 1

从内置宏参数,可以看出编译器,默认支持RV64IMAFDC指令集架构。

如果使用以下命令:

riscv-nuclei-elf-gcc -march=rv32gc -mabi=ilp32 -E -dM a.h | grep riscv

得到如下结果:

#define __riscv 1

#define __riscv_atomic 1

#define __riscv_cmodel_medlow 1

#define __riscv_float_abi_soft 1

#define __riscv_fdiv 1

#define __riscv_flen 64

#define __riscv_compressed 1

#define __riscv_mul 1

#define __riscv_muldiv 1

#define __riscv_xlen 32

#define __riscv_fsqrt 1

#define __riscv_div 1

从内置宏参数,可以看出编译器,支持RV32IMAFDC指令集架构。

二、增加内置宏参数

对于riscv,支持p扩展,该扩展,是针对于dsp应用。

如果我们想,当gcc的-march选项中,有指定p扩展指令集,那么编译器就内置__riscv_dsp宏。如果没有指定p扩展指令集,就不内置该__riscv_dsp宏。

这样的话,编写的dsp程序,就可以使用该宏判断,是否支持p扩展指令。

下面简述一下,如何实现该功能,也就是如何根据所传参指令集架构参数,增加内置宏参数。

这里,主要是参考riscv-gcc的如下commit:

https://github.com/riscv/riscv-gcc/commit/06ab742f982d23488ec2d8c0266cb720fe775f7c

该commit,是往riscv-gcc中增加RV32E的支持。

三、修改riscv.opt

首先是修改 gcc/config/riscv/riscv.opt文件,在其中,增加DSP宏。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值