前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Utility之动态加载的变量的位置

Utility之动态加载的变量的位置

作者头像
Taishan3721
发布2021-01-08 15:39:11
6960
发布2021-01-08 15:39:11
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

VIP中变量的存储位置已经知道了,那使用DKM动态加载的变量呢?今天来找一找,写个最简单的例子

代码语言:javascript
复制

#include <stdio.h>
#include <taskLib.h>

int gAaa;
int gBbb = 1;
static int sCcc;
static int sDdd = 1;
void test()
{
    int lEee;
    int lFff = 1;
    static int sGgg;
    static int sHhh = 1;

    TASK_DESC tDesc;

    printf("0x%08x is: int gBbb = 1\n", &gBbb);
    printf("0x%08x is: static int sDdd = 1\n", &sDdd);
    printf("0x%08x is: static int sHhh = 1\n", &sHhh);

    printf("0x%08x is: static int sGgg\n", &sGgg);
    printf("0x%08x is: static int sCcc\n\n", &sCcc);

    printf("0x%08x is: int gAaa\n", &gAaa);

    taskInfoGet(0, &tDesc);
    printf("0x%08x task stack base\n", tDesc.td_pStackBase);
    printf("0x%08x is: int lEee\n", &lEee);
    printf("0x%08x is: int lFff = 1\n", &lFff);
    printf("0x%08x task stack end\n", tDesc.td_pStackEnd);
    }

很容易得到:局部变量存放在任务的栈里。其它的呢?

先用moduleShow()看看加载的这个文件就知道了

VxWorks会为动态加载的每个文件创建一个module,每个module有自己的text、data、bss段。那些有初值的全局变量和静态变量就放在data段里,无初值的静态变量就放在bss段里。

那这个aaa是怎么回事?无初值的全局变量,你知道它在哪里吗?

我是泰山 专注VX 0x10年

一起学习 共同进步

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档