韦东山Linux嵌入式课程社区
直播中

李焯尤

7年用户 147经验值
私信 关注

代码重定位的全局变量程序在运行中是如何建立的

注意:如果点击空白处无法输入,则点击字会有输入提示符 | 则可以使用键盘进行输入!

此板块为  [ARM裸机加强版]
  • 问题所在章节:
  • 005_ARM裸机1期加强版(新1期)->第013课_代码重定位
  • 发生问题的运行环境:
  • 问题发生描述:
关于重定位的问题,在视频中说到bss段(初始值为0,无初始值的全局变量)和Commen段不保存在bin文件中(见001_段的概念_重定位的引入.jpg和003_链接脚本的解析.jpg)
困惑1、程序是执行bin文件中的代码,那全局变量程序在运行中它是如何建立的呢,建在那个位置呢?
       2、我查看013课相关的代码,对比bin文件和反汇编文件(.dis),发现只要有全局变量为零的程序,bin文件后面有很多零,这该怎么解释呢,怎么会有零呢?代表初始值为零或者没有初始值的变量?


  • 输出的错误信息:

回帖(3)

邢党铿

2019-4-12 14:21:28
那全局变量程序在运行中它是如何建立的呢,建在那个位置呢?
代码重定位之后,又程序将后边bss段内存清零,实际的Bin中没有,内存里必须要有
bin文件里的0应该是别的东西
举报

关欣冰

2019-4-12 14:37:36
这个样子不是无缘无故的增加了bin文件的大小吗?而且我发现bin文件都是以42 00 00 00 开头,41 00 00 00结尾。
举报

文妮

2019-4-12 14:54:42
开头结尾应该有特殊的标记吧
哪里无乱无故增加了Bin大小了,bss不在Bin里不是缩小了么
举报

更多回帖

发帖
×
20
完善资料,
赚取积分