ARM学习笔记(五)--ARM编译器支持的数据类型及预定义宏

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 

*************************************************************

ARM编译器支持的数据类型

************************************************************

 

数据类型 长度(位) 对齐特性

Char       8                1(字节对齐)

short      16               2(百字对齐)

Int           32              4(字对齐)

Long      32               4(字对齐)

Longlong 64            4(字对齐)

Float       32              4(字对齐)

Double     64               4(字对齐)

Long double 64           4(字对齐)

All pointers 32             4(字对齐)

Bool(C++ only) 32           4(字对齐)

1.整数类型

在ARM 体系中,整数类型是以2的补码形式存储的。对于long long类型来说,在little endian内存模式下,其低32位保存在低地址的字单元中,高32为保存在高地址的字单元中;在big endian模式下,其低32位保存在高地址的字单元中,高32为保存在低地址的字单元中。对于整型数据的操作遵守下面的规则:

 

**所有带符号的整型书的运算是按照二进制的补码进行的。

**带符号的整型数的运算不进行符号的扩展。

**带符号的整型数的右移操作是算数移位。

**制定的移位位数的数是8位的无符号数。

**进行移位操作的数被作为

在MDK5.37版本中添加Complier Version 5( 解决Missing Compiler Version 5 ) 本文章仅作为个人学习记录,方法也是从其他博主的博客中得到的,链接如下:二、Keil——Missing Compiler Version 5 和 core_cm3.c 问题解决 - YI颗白菜 - 博客园 (cnblogs.com) 问题描述 更新最新的keil版本(MDK5.37)后,在编译以前版本的工程文件时,发现出现了非常多的报错,在网上搜索之后发现原来时编译器版本不匹配的问题,即MDK5.37中使用的是Version 6版本的编译器,而缺少Version 5,对于以前编写的工 阅读详情

相关推荐

CodeWarrior编译器预定义与Pragma指令实战指南

在嵌入式C/C++开发中,编译器优化与代码控制是提升性能与可靠性的核心技术。通过预定义,开发者可以在编译时获取环境信息,如编译器版本、优化级别和目标架构,实现精准的条件编译。Pragma指令则提供了对编译器行为的精细调控,例如控制优化策略、语言标准符合性及异常处理。这些机制共同构成了嵌入式开发中平衡性能、代码大小与可移植性的关键手段。本文聚焦于CodeWarrior for Power Architecture编译器,深入解析其特有的预定义(如__optlevel、__ALTIVEC__)和Pragma

weixin_34239169的博客 540

ARMCC Compiler Version 5:深入解析与应用

资源下载链接为: https://pan.quark.cn/s/9648a1f24758 Keil 5备份的Compiler Version 5编译器可用于安装在5.37及之后的版本中,以解决因缺少编译器而导致的错误异常问题。

Arm编译器v5到v6预定义迁移实战指南

预定义编译器提供的特殊标识符,用于条件编译和代码适配。在嵌入式开发中,Arm编译器预定义系统经历了从CPU-centric到Feature-centric的架构演变,这种变化使得代码能更好地适配不同ARM架构特性。通过理解__ARM_ARCH、__ARM_FEATURE_XXX等新体系,开发者可以编写更具可移植性的代码。在编译器迁移场景中,正确处理预定义变更对保证代码正确性至关重要。本文基于实际项目经验,详细解析Arm Compiler v5到v6的定义变化,提供架构识别、浮点支持等关键场景的

weixin_33430573的博客 269

ARM编译器常用的预定义

ARM编译器预定义了许多。这些提供有关工具链版本号和编译器选项的信息。 编译器版本 为:__ARMCC_VERSION;数字形式呈现;使用方法如下: rt_kprintf("Compiler Version: %u\r\n", __ARMCC_VERSION); 优化等级 为:__OPTIMISE_LEVEL;数字形式呈现;使用方法如下: rt_kprintf("Compiler optimization level: %u\r\n", __OPTIMISE_LEVEL); 软件编译日.

caihaitao2000的博客 5563

Keil切换到armclang编译器,到底强在哪里?

点击上方“小麦大叔”,选择“置顶/星标公众号”福利干货,第一时间送达大家好,我是小麦,上次写过一篇文章 《Keil 编译太慢怎么办?教你一招,提速10倍》,减少了中间文件的生成,确实把编...

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 6067

ARM编译器预定义

 ARM编译器预定义了一些,这些预定义对应一定的数值,有些预定义没有对应数值,见下表:_arm                 _                使用编译器armcc,tcc,armcpp,tcpp时_ARMCC_VERSION       Ver              代表编译器版本号,其格式为:                         

xjgprs的专栏 2086

2019-11-07 检查gcc交叉编译器预定义(ARM32/ARM64/X86-64)以及对浮点数的支持情况

预备知识1 armel、armhf和arm64区别选择 https://www.veryarm.com/872.html 预备知识2 https://www.veryarm.com/872.html linaro公司ARMV8架构32/64位gcc Ubuntu 安装64位arm交叉编译器 sudo apt install -y gcc-aar...

阿群的笔记(同步备份自简书) 2827

Arm编译器预定义与优化技术实战指南

预定义编译器提供的特殊标识符,在预处理阶段即可获取编译环境和硬件架构信息。这类通过条件编译实现代码的平台适配和性能优化,是嵌入式开发和性能敏感型应用的关键技术。以Arm架构为例,__ARM_FEATURE_SVE等可以检测硬件支持的向量指令集,而__armclang_version__则用于编译器版本管理。结合链接时优化(LTO)和基于性能分析的优化(PGO)技术,开发者可以构建高度优化的代码:LTO实现跨模块的全局优化,PGO则根据实际运行数据指导热点代码优化。这些技术在数值计算、机器学习推理等场

weixin_30855761的博客 351

KEIL编译器预处理器和预定义(include,ifdef,def等)

Keil使用的C编译器支持常用的编译器预定义和对文件进行预处理。 在设置界面打开预处理器选项,就可以输出每一个文件对应的预处理文件。当然,你不选择这个选项,编译器也会默认启用预处理编译的,只不过不会对应每一个C文件生成这个预处理结果文件而已。 首先,我们了解一下何为预定义和预处理器以及他们起什么作用 预定义ARM编译器预定义了很多,这些提供了工具链版本号和编译器选项的相关信息。 预处...

huangbinvip的专栏 1万+

ARM 之七 主流编译器armcc、iar、gcc for arm、LLVM(clang))详细介绍

比较 目前,针对于 ARM 平台的主流编译器主要有以下三者: 比较 ARMCC IAR GCC for ARM 命令行工具 IDE中,独立提供 仅随其IDE发布,不独立提供 独立提供 开发商 ARM IAR GNU(目前由ARM维护) 支持的平台 Windows、Linux Windows Windows、Linux、Mac 配套 IDE Keil MDK、Develo...

技术干货 6万+

Keil 预定义详解

本文详细介绍了Keil MDK编译器中常见的预定义及其应用场景。预定义包括编译器标识与版本(如__ARMCC_VERSION、KEIL)、语言标准(如__cplusplus)、目标处理器架构(如__ARM_ARCH、__CORTEX_Mx系列)、浮点支持(__FPU_PRESENT)等核心。文章提供了查看所有预定义的方法,并给出代码示例展示如何利用这些进行条件编译,检测编译器版本、目标处理器类型和硬件特性。这些预定义可帮助开发者编写更灵活、可移植的嵌入式代码。

本博客分享软硬件一体化开发实战。硬件涵盖 PCB 设计、STM32 等 MCU 底层开发;软件包含 C++、Rust,Qt/QML、PyQt、Slint、TouchGFX、LVGL 各类 GUI 框架。方便软硬件开发者查阅学习。欢迎关注! 519

手把手教你升级Keil MDK的ARM编译器

关注、星标公众号,不错过精彩内容作者|strongerHuang微信公众号 | strongerHuang今天在我的技术交流群里,有朋友问了这么一个问题:怎么才能用更高的编译器呀?这...

strongerHuang 4万+

Visual C++ WinCE设备编译器支持的内在函数和

Visual Studion 2005 支持的设备编译器的内在函数下面的函数是支持所有设备编译器的公共内在函数:(位于头文件 )( x86, ARM, SH-4, MIPS )    __assume : 传递一个提示到优化器。    _debugbreak : 促使一个调试断点被插入。    __noop : 忽略函数及其参数。    _CacheRelease : 将被包含被指针引用地址的高速

Meng You的专栏 971

嵌入式开发进阶:HIWARE编译器预定义与#pragma指令深度解析

在C/C++嵌入式系统开发中,编译过程是连接源代码与硬件执行的关键环节。编译器不仅负责语法检查和代码生成,更通过一系列内置机制为开发者提供了在编译时感知和控制环境的能力。预定义(如__LINE__、__FILE__)允许代码在编译阶段获取文件、行号、编译器版本及目标平台字节序等上下文信息,是实现条件编译和编写可移植代码的基石。编译指示符(#pragma)则提供了向编译器发送非标准指令的标准方式,用于精细控制内存布局、函数内联等行为,这对于资源受限、对性能和内存有严苛要求的嵌入式场景至关重要。掌握这些特性,

weixin_30448603的博客 373

arm交叉编译器简单介绍

交叉编译器命名规则:交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - 体系架构,如ARM,MIPS vendor - 工具链提供商 os - 目标操作系统 eabi - 嵌入式应用二进制接口(Embedded Application Binary Interface)

onlyshi的专栏 6277

ARM主流编译器armcc、iar、gcc for arm

还提供了64位版本的armlink,可以访问64位计算机上可用的更大内存量。作为维持和增强 GCC 编译器支持 ARM 架构的持续承诺的一部分,ARM 正在维护一个 GNU 工具链,其 GCC 源分支针对嵌入式 ARM 处理器,即 Cortex-R / Cortex-M处理器系列,覆盖 Cortex-M0 ,Cortex-M3,Cortex-M4,Cortex-M0 +,Cortex-M7,Armv8-M基线和主线,Cortex-R4,Cortex-R5,Cortex-R7和Cortex-R8。

hxsln11的博客 4981
上一篇: ARM学习笔记(四)--ARM体系的存储系统
下一篇: ARM学习笔记(六)--ARM指令的预取和自修改代码
liufei_learning
博客等级 码龄17年 822粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值