IAR 编译器相关知识学习==扩展关键字

声明:这篇文章部分转自别处,仅仅试过其中的某些symbols(符号,标识==可称为关键字),实际使用中,请结合自己的环境,这里顺便提供一种查找学习IAR相关知识的方法:


这是学习相关编译器知识的有效途径,下图为效果图:


关于嵌入式开发中,了解编译器的意义、重要性,推荐博文:

嵌入式领域,你要了解你的编译器

以下为IAR中可能存在的关键字....

1.扩展关键字:用于控制数据和指针


__eeprom 用于EEPROM 存储空间, 控制数据存放,控制指针类型和存放
__tinyflash, __flash, __farflash, __hugeflash 用于flash 存储空间, 控制数据存放,控制指针类型和存放
__ext_io, __io 用于I/O存储空间, 控制数据存放,控制指针类型和存放
__regvar 放置一个变量在工作寄存器中

 

2.函数扩展关键字:


__nearfunc __farfunc 用于控制数据存放,这组关键字必须在函数声明和定义的时候指定
__interrupt. 关键字控制函数的类型。这组关键字必须在函数声明和定义的时候指定
__root. 关键字仅仅控制有定义的函数

 

3.其它特别的关键字:


用于变量的绝对地址定位。也可以用#pragma location 命令
#pragma vector 提供中断函数的入口地址。
__root 保证没有使用的函数或者变量也能够包含在目标代码中
__no_init 禁止系统启动的时候初始化变量. 
asm, __asm 插入汇编代码

====================================================================

 

__root 关键字保证没有使用的函数或者变量也能够包含在目标代码中.
定义存放在__flash 空间的数据在程序编译时会自动生成代码嵌入到flash代码中,对于程序没有使用也要求编译的数据(比如可以在代码中嵌入你的版本号,时间等)必须加关键字__root 限制。

例:

#i nclude<iom8.h>  
__root __flash unsigned char p @ 0x10 =0x56;  
void main(void)  
{  
  
}  

程序没有使用P变量,编译也会生成该代码。  
:020000020000FC  
:1000000016C018951895189518951895189518955F  
:10001000569518951895189518951895189518953A  
:10002000189518951895089500008895FECF0FE94A  
:100030000DBF00E00EBFC0E8D0E003D0F4DFF4DF76  
:06004000F3CF01E008957A  
:0400000300000000F9  
:00000001FF 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值