定义全局变量的汇编代码在哪里?

dragonzcs 2009-10-10 11:36:17
我写了一个程序,里面有全局变量,例如:


int gloab=100;
int main()
{
int a;
char b;
。。。。。。

我用VC go to disassembly了一下,发现汇编代码只是从main开始的,请问int gloab=100;这段汇编代码在哪?谢谢!
...全文
445 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dragonzcs 2009-10-11
  • 打赏
  • 举报
回复
呵呵,多谢各位了!
danxuezx 2009-10-10
  • 打赏
  • 举报
回复
您看到的是执行时候的代码,全局变量是在程序加载的时候映射到内存的数据段。

进程的运行过程如下。
1)地址映射,代码段,数据段等映射到逻辑地址空间
2)main才开始运行。
3)代码访问 “逻辑地址空间”中的内容,该地址空间尚未加载到物理内存时,加载之。

一般我们查看时都是从第2步开始的

taodm 2009-10-10
  • 打赏
  • 举报
回复
那个int gloab = 100;为什么一定要有汇编代码呢。
真这么好奇心强,去google 《Linkers & Loaders》
xingzhe2001 2009-10-10
  • 打赏
  • 举报
回复
定义全局变量不需要汇编代码,直接编译器在写exe/lib/dll时会在某个数据段留好位置。
pcboyxhy 2009-10-10
  • 打赏
  • 举报
回复
汇编里不过是把栈顶的位置调整一下
deerwin1986 2009-10-10
  • 打赏
  • 举报
回复
全局变量首先在编译时 会被编译器放在1.如果初始化 则data段 2.如果未初始化 则bss段(不占空间)
而后会由操作系统在加载时 放入进程虚拟地址空间用户模式分区的全局数据区。。。
呵呵 不错哦 有好奇心 有对知识的饥渴 早晚成大器 LZ加油!
闲梦远的天空 2009-10-10
  • 打赏
  • 举报
回复
全局变量的位置跟编译器有关的,在vc中有一种可能是放在数据段中,加载的时候映射到地址空间中的。不过根据全局变量的使用情况,编译器也有可能会将它优化掉,根本看不到它的。
taodm 2009-10-10
  • 打赏
  • 举报
回复
一般C、C++程序员不该关心编译出来的汇编是啥样的。
dragonzcs 2009-10-10
  • 打赏
  • 举报
回复
第一步程序员一般不用关心吧?

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧