| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2807 人关注过本帖
标题:全局变量怎么不在数据段(.data)中呢?
取消只看楼主 加入收藏
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
收藏
 问题点数:0 回复次数:5 
全局变量怎么不在数据段(.data)中呢?
对代码
int g_iShared = 0;
int main()  
{  
    g_iShared = 200;  
    int iLocal  = 300;
    printf("%d,0x%p\n",g_iShared,&g_iShared);  
    //printf("%d,0x%p\n",iLocal,&iLocal);
    return 0;

}
反汇编,看到 g_iShared  被安排在代码段(.text)中,而不是数据段(.data)中,这个是为什么呢?

[[it] 本帖最后由 vfdff 于 2008-10-30 00:40 编辑 [/it]]

globe.JPG (16.82 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 代码段 数据段 全局变量 
2008-10-30 00:38
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
好像确实 数据段(.data)中的才是正真的 全局变量地址
因为这个代码段(.text)中的初始值和程序中指定的初始值不一样,应该不是

但是有点奇怪,为什么这个反汇编刚好把这个代码段(.text)的变量名和程序中变量名一样
而 数据段(.data)中的名称反而不一样

地址.JPG (22.1 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-10-30 00:53
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
在 bss 段 是因为你没有初始化

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-10-30 12:54
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 2# 的帖子
你这个是什么反汇编工具??

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-10-30 12:57
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
我使用 OllyDbg ,看到这个 0x00407030 就是(.data空间)

而且可以看到 407030 地址上数据就是0x99 (我修改了代码的初始值,为方便观察)
修改后:
#include <stdio.h>

int g_iShared = 0x99; // 修改 初始值
int main()  
{  
    g_iShared = 200;  
    int iLocal  = 300;
    printf("%d,0x%p\n",g_iShared,&g_iShared);  
    //printf("%d,0x%p\n",iLocal,&iLocal);
    return 0;
}
看来是我ida使用错误了,造成错误分析,不好意思了

[[it] 本帖最后由 vfdff 于 2008-11-1 11:39 编辑 [/it]]

地址.JPG (27.05 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册


共享变量.JPG (49.85 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-11-01 01:49
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
收藏
得分:0 
回复 11# 的帖子
那你怎么确定这个地址 0x00404010 就是分配给这个全局变量的呢 ?

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2008-11-01 13:01
快速回复:全局变量怎么不在数据段(.data)中呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017182 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved