Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
GCC编译器中和ARM体系结构相关的选项解释
发布于 2008-07-12 19:43:03 浏览:4357
订阅该版
和ARM体系结构相关的选项 这些是为ARM(Advanced RISC Machines)结构定义的“-m”开关: -mapcs-frame 对所有函数都生成一个遵从ARM程序调用标准的堆栈帧,即使在正确执行代码无需严格这么做时。使用此开关时指定“-fomit-frame-pointer”将不产生叶函数的堆栈帧。缺省情况下是“-mno-apcs-frame”。 -mapcs 与“-mapcs-frame”相同。 -mapcs-26 产生使用26比特程序计数器的处理器代码,遵从APCS 26比特选项的函数调用标准。此开关替代了编译器早期版本中的“-m2”和“-m3”开关。 -mapcs-32 产生使用32比特程序计数器的处理器代码,遵从APCS 32比特选项的函数调用标准。此开关替代了编译器早期版本中的“-m6”。 -mapcs-stack-check 产生检查每个函数入口可用的堆栈空间大小(实际使用了一些堆栈空间)。如果可用空间不足,将按照所需堆栈空间大小调用函数 “__rt_stkovf_split_small”或者“__rt_stkovf_split_big”。运行时的系统需要提供这些函数。缺省情况下是 “-mno-apcs-stack-check”,因为这样产生的代码较小。 -mapcs-float 使用浮点寄存器传递浮点参数。这是APCS的一个变种。如果目标硬件存在浮点单元,或者代码将执行较多的浮点计算,推荐使用此开关。缺省情况下是“-mno-apcs-float”,因为使用开关“-mapcs-float”将导致只有整数的代码大小稍有增加。 -mapcs-reentrant 产生可重入的位置独立代码。等价于“-fpic”开关。缺省情况下是“-mno-apcs-reentrant”。 -mthumb-interwork 产生支持ARM和THUMB指令集间调用的代码。不使用此开关,在一个程序里就不能可靠地使用两个指令集。缺省情况下是“-mno-thumb-interwork”,因为指定了“-mthumb-interwork”产生的代码稍微大一些。 -mno-sched-prolog 禁止对函数prolog里的指令重新排序,或者把这些指令与函数体里的指令进行合并。这就意味着所有函数都以一组可识别的指令开始(实际上是一小组不同函数开端中的一个),如果函数处于可执行代码段中,可以使用此信息定位函数的起始位置。缺省情况下是“-msched-prolog”。 -mhard-float 产生包含浮点指令的输出。这是缺省情况。 -msoft-float 产生包含浮点库调用的输出。注意:所需的库不是所有ARM目标机都提供的。一般使用机器惯用的C编译器的配置,但在交叉编译时无法直接获得,必须进行一些整理为交叉编译提供合适的库函数。“-msoft-float”改变了输出文件的调用规范,所以只有程序的所有部分都使用此开关编译才起作用。特别是需要使用“-msoft-float”开关编译与GNU CC一起获得的“libgcc.a”库才行。 -mlittle-endian 产生运行在little-endian模式下的处理器代码。这是所有标准配置的缺省情况。 -mbig-endian 产生运行在big-endian模式下的处理器代码;缺省情况是产生运行在little-endian模式下的处理器代码。 -mwords-little-endian 此开关只用于为big endian处理器产生代码。产生字序为little-endian但字节顺序为big-endian的代码。也就是说,字节顺序为“32107654” 格式。注意:只有在要求与2.8之前版本编译器产生的big-endian ARM处理器代码兼容时才用到此开关。 -mshort-load-bytes 不试图通过从一个没有边界对齐的地址载入一个字的方式载入半个字(如“short”)。某些目标机的MMU被配置成用陷阱捕获没有边界对齐的载入;使用此开关产生的代码在这些环境下是安全的。 -mno-short-load-bytes 使用没有边界对齐的字载入半个字(如“short”)。此开关产生的代码效率较高,但MMU有时被配置成用陷阱捕获这些指令。 -mshort-load-words 与“-mno-short-load-bytes”相同。 -mno-short-load-words 与“-mshort-load-bytes”相同。 -mbsd 此开关只用于RISC iX。仿真原始的BSD模式编译器。这是没有指定“-ansi”时的缺省情况。 -mxopen 此开关只用于RISC iX。仿真原始的X/Open模式编译器。 -mno-symrename 此开关只用于RISC iX。不要在代码汇编后运行汇编程序随后的处理程序“symrename”。一般在准备与RISC iX C库连接时需要修改某些标准符号,此开关忽略这一过程。为交叉编译构建的编译器不运行汇编程序随后的处理程序。 -mcpu=
此开关指定目标ARM处理器的名称。GCC使用这个名称来确定产生汇编代码时可用的指令类型。可用的名称是: arm2、arm250、arm3、arm6、arm60、arm600、arm610、arm620、arm7、arm7m、arm7d、 arm7dm、arm7di、arm7dmi、arm70、arm700、arm700i、arm710、arm710c、arm7100、 arm7500、arm7500fe、arm7tdmi、arm8、strongarm和strongarm110。 -march=
此开关指定目标机ARM结构的名称。GCC使用这个名称来确定产生汇编代码时可用的指令类型。此开关可以同“-mcpu=”开关结合使用,也可以替代“-mcpu=”开关。可用的名称是:armv2、armv2a、armv3、armv3m、armv4和armv4t。 -mfpe=
此开关指定了目标机可用的浮点仿真版本。可用值为2和3。 -mstructure-size-boundary=
所有结构和联合的大小都处理成此开关设置比特数的倍数。可用值为8和32。不同的工具套件所使用的缺省值不同。对于COFF目标机使用的工具套件缺省值为8。指定较大的数字可以产生速度较快、效率较高的代码,但同时会增加程序的大小。若使用结构或联合交换信息,则使用某个值编译的代码可能不可以与使用另一个值编译的代码或库共同使用。鼓励程序员使用值32,因为工具套件未来版本可能会缺省使用值32。 Thumb开关 -mthumb-interwork 产生支持THUMB和ARM指令集间调用的代码。不使用此开关,在一个程序里就不能可靠地使用两个指令集。缺省情况下是“-mno-thumb-interwork”,因为使用“-mthumb-interwork”开关产生的代码稍微大一些。 -mtpcs-frame 对所有非叶函数都生成一个遵从Thumb程序调用标准的堆栈帧。(叶函数是不调用任何其它函数的函数)。缺省情况下是“-mno-apcs-frame”。 -mtpcs-leaf-frame 对所有叶函数都生成一个遵从Thumb程序调用标准的堆栈帧。(叶函数是不调用任何其它函数的函数)。缺省情况下是“-mno-apcs-leaf-frame”。 -mlittle-endian 产生运行在little-endian模式下的处理器代码。这是所有标准配置的缺省情况。 -mbig-endian 产生运行在big-endian模式下的处理器代码。 -mstructure-size-boundary=
所有结构和联合的大小都处理成此开关设置比特数的倍数。可用值为8和32。不同的工具套件所使用的缺省值不同。对于COFF目标机使用的工具套件缺省值为8。指定较大的数字可以产生速度较快、效率较高的代码,但同时会增加程序的大小。这两个值可能不兼容。若使用结构或联合交换信息,则使用某个值编译的代码可能不可以与使用另一个值编译的代码或库共同使用。鼓励程序员使用值32,因为工具套件未来版本可能会缺省使用值32。
查看更多
1
个回答
默认排序
按发布时间排序
撰写答案
登录
注册新账号
关注者
0
被浏览
4.4k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5940
被采纳
76
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
16
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部