• 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




     

  • 相关阅读:
    USACO第三道题
    uva350 PseudoRandom Numbers
    uva10879 Code Refactoring
    Scrum 冲刺第一篇 晨曦
    WC.exe 晨曦
    [LeetCode 126] 单词梯II(Word Ladder II)
    [LeetCode 129] 根节点到叶子节点数字求和(Sum Root to Leaf Numbers)
    [LeetCode 125] 验证回文(Valid Palindrome)
    [LeetCode 123] 买入与卖出股票的最佳时机III(Best Time to Buy and Sell Stock III)
    [LeetCode 124] 二叉树最大路径和(Binary Tree Maximum Path Sum)
  • 原文地址:https://www.cnblogs.com/pang123hui/p/2309829.html
Copyright © 2020-2023  润新知