起因是遇到一堆这样子的宏
#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个字节表示地址
欢迎各路大神批评指正,如果没有人指正,我就暂时这么理解着。