嵌入式之家

 找回密码
 现在注册

QQ登录

只需一步,快速开始

搜索
热搜: ARM cortex
查看: 6027|回复: 1

赋初值的全局变量和静态变量,初值被放在什么地方?

[复制链接]

该用户从未签到

55

主题

168

帖子

1767

积分

金牌会员

Rank: 6Rank: 6

积分
1767
发表于 2016-4-29 10:50:40 | 显示全部楼层 |阅读模式
unsigned int g_unRunFlag=0xA5;
             static unsigned int s_unCountFlag=0x5A;
             这两行代码中,全局变量和静态变量在定义时被赋了初值,可是,你知道他们放在什么地方吗?
            对于在程序中赋初值的全局变量和静态变量,程序编译后,MDK将这些初值放到Flash中,紧靠在可执行代码的后面,在程序进入main函数前,会运行一段库代码,将这部分数据拷贝到相应的RAM位置。
           ARM的链接器当中,ARM印象文件各组成部分在存储系统中的地址有两种:一种是在印象文件位于存储器中时,(也就是该印象文件开始运行之前,通俗的说就是下载到Flash当中的二进制代码)的地址,称为加载地址;一种是印象文件运行时(通俗的说就是给板子上电,开始运行Flash中的程序了)的地址,称为运行时地址。 赋初值的全局变量和静态变量在程序还没有运行的时候,初值是被放在Flash中的,这个时候他们的地址称为加载地址,当程序运行后,这些程序会从Flash中拷贝到RAM中,这时候就是运行时地址了。
回复

使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 22:00
  • 签到天数: 1 天

    [LV.1]初来乍到

    101

    主题

    192

    帖子

    1645

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    1645
    发表于 2016-5-6 23:14:44 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 现在注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|嵌入式之家 ( 京ICP备14038168号-1 )

    GMT+8, 2025-5-1 16:13 , Processed in 0.021642 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表