![](https://img-blog.csdnimg.cn/dfea15e18ac440faab3c711020d19dbb.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ARM Compiler
文章平均质量分 94
Arm Compiler for Embedded
SOC罗三炮
嵌入式软件开发,ARM CPU架构研究,某厂芯片SOC系统验证工程师
展开
-
C语言结构体字节对齐(内存对齐)之#pragma pack和__attribute__((packed)的使用
在不使用和本文主要讨论如何使用#pragma pack和__attribute__((packed)等选项来自定义字节对齐大小。使用pack功能将数据结构进行打包,以减小应用程序对内存的占用,这一点在嵌入式系统中,尤其是需要存储和访问大量的时候,显得尤其重要。如果没有使用#pragma pack和__attribute__((packed)等选项,将数据结构进行打包。编译器为了提高对数据成员的访问速度,通常会在不同大小的数据成员之间插入空白内存(padding),进行补齐操作,即内存对齐。原创 2023-07-01 23:07:54 · 6814 阅读 · 0 评论 -
ARM嵌入式编程优化之在C/C++中栈的使用
函数使用的堆栈量取决于函数参数的数量和类型、函数中的局部变量以及编译器执行的优化等因素。栈的使用情况很难估计,因为它依赖于代码,并且根据程序执行时所采用的代码路径,栈的使用在每次运行之间可能会变化。要检查应用程序中的栈使用情况,可以使用链接器选项** --info=stack **。命令,生成callgraph文件,该命令会生成一个名为FileImage.htm的文件,它包含应用程序中各种函数的堆栈使用信息。检查应用程序中函数使用的栈使用量是一种很好的做法。然后可以考虑重写代码以减少栈使用。原创 2023-05-27 23:17:07 · 4368 阅读 · 0 评论 -
ARM嵌入式编程优化之内联函数(inline)
内联函数的本质是以空间换时间:增加了代码量,但减少了函数调用时带来的性能损耗。默认情况下,编译器会自己决定是否将一个函数内联。在编译优化时,默认情况下编译器会根据时间对性能进行优化。如果编译器决定内联一个函数,它会确保避免大量的代码增长。当使用-Oz或-Os等编译优化选项来限制代码大小时,编译器对内联做出智能的判断,并旨在将代码量保持在最小。原创 2023-05-22 22:38:18 · 4101 阅读 · 0 评论 -
ARM嵌入式编译之循环操作(LOOP)优化
取决于循环的迭代次数,完成循环可能需要花费大量时间,此外,每次迭代时,需要判断循环条件是否成立,这一操作也会降低循环的性能。原创 2023-05-16 22:45:58 · 4033 阅读 · 0 评论 -
ARM嵌入式编译器-volatile关键字对编译器优化的影响
智能的(进行优化的)编译器可能会把变量的值临时储存在寄存器上,便于下次读取,以节约时间,这个过程被称为高速缓存。但是有一些agent在内存上改变了变量的值,寄存器上的还是旧数据,这样就出错了。如果被volatile 关键字修饰,编译器不会进行高速缓存,直接去内存中读取该变量的数据。编译器会优化什么将内存变量缓存到寄存器中。调整指令顺序,充分利用CPU指令流水线,进行指令重新排序读写指令。原创 2023-05-07 17:14:26 · 4124 阅读 · 0 评论 -
ARM嵌入式编译器控制诊断信息(warning/error)
ARM编译器以警告(warning)和错误(error)的形式来提供编译诊断信息,并且用户可以通过一些命令行选项,来控制这些warnings和errors的打开或者关闭。编译器会在程序编译和链接过程中将遇到的warnings和errors在控制终端打印出来,如果用户有多个源代码文件,当errors被发现时,编译器只会报告的诊断信息。原创 2023-05-06 23:16:22 · 3989 阅读 · 0 评论 -
ARM嵌入式编译器编译优化选项 -O
Arm嵌入式编译器可以执行一些优化来减少代码量并提高应用程序的性能。不同的优化级别有不同的优化目标,不仅如此,针对某个目标进行优化会对其他目标产生影响。比如想减小生成的代码量,势必会影响到该代码的性能。所以优化级别总是这些不同目标(代码量,程序性能,debug信息)之间的权衡。原创 2023-04-25 22:38:30 · 5453 阅读 · 0 评论 -
Arm Compiler for Embedded 6 编译器工具链常用选项
ARM 编译器6支持许多命令行编译选项,用户可以根据自己代码的使用场景,使用对象来选择使用,从而生成不同属性的应用程序。原创 2023-04-16 21:05:07 · 6845 阅读 · 0 评论 -
ARM 编译器 Arm Compiler for Embedded 6 相关工具链简介
Arm Compiler 6 是 Arm 中用于 Arm Cortex® 和 Arm Neoverse™ 处理器的最先进的 C 和 C++ 编译工具链。Arm Compiler 6 与 Arm 架构一起开发。因此,Arm 编译器 6 经过优化,可为从小型传感器到 64 位设备的嵌入式裸机应用生成高效代码。Arm Compiler 6 将 Arm 优化的工具和库与基于 LLVM 的现代编译器框架相结合。原创 2023-04-09 13:16:03 · 11244 阅读 · 0 评论