@far @gpage 今天学到了小知识

这篇博客讨论了STM8微控制器中与编译器相关的宏定义,如@far@gpage,它们用于指定内存地址的长度。@far指示地址使用3个字节表示,允许寻址更大的内存范围。这些宏可能在特定的C编译器环境下使用,例如COSMIC,用于管理代码和数据在内存中的布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

起因是遇到一堆这样子的宏
#define DSM_VAR  @far @gpage
#define DSM_VAR_NOINIT_FAST  @far @gpage
#define DSM_VAR_NOINIT  @far @gpage
#define DSM_CONST
#define DSM_APPL_CONST
#define DSM_CODE
#define DSM_APPL_CODE
#define DSM_APPL_DATA  @far @gpage /* ##ntr */
#define DSM_PBCFG @far @gpage
#define DSM_AUTOMATIC

然后同事问我, @far @gpage什么意思,然后找了一圈没有个所以然。最后找到一个了@far的解释

非标准C的@far 和COSMIC 的 C编译器相关联的
在STM8中,指定地址的长度可以有3种方式,@tiny使用1个字节表示地址,只能寻址地址范围0x00~0xFF;@near使用2个字节表示地址,只能寻址地址范围0x0000~0xFFFF;@far使用3个字节表示地址,寻址地址范围0x000000~0xFFFFFF

那么就大胆的猜测一下, @far @gpage这个东西是             

编译器指定的的内存块的值用3个字节表示地址

欢迎各路大神批评指正,如果没有人指正,我就暂时这么理解着。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值