Chinaunix首页 | 论坛 | 博客
  • 博客访问: 77810
  • 博文数量: 113
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-19 20:07
文章分类

全部博文(113)

文章存档

2016年(113)

我的朋友

分类: 嵌入式

2016-09-19 20:29:29

最近在调一个裸板程序时候发现单步跟踪到全局变量操作的时候,程序就飞了。
我们知道初始化的全局变量是放在data段的,为什么会出问题了。想了一会,发现在自己在链接的时候就简单的指定了一下-Ttext 0x3400。
以前认为,只要这样指定代码段后,后面的data段,bss 段应该接着后面存放。呵呵,这种想法是我自己的想法,但编译器不是我写的,人家不这样干。后来写了一个程序测试了一下,以下是反汇编的结果:


两者有明显的差别,如果想数据段是接着代码段后面存放的,还是需要自己写连接脚本文件;-Ttext 0x00这种指定方式仅仅是指定了一下代码段的运行地址,后面的数据段并不会在后面接着存放。

最后附上,整个测试代码。
lds.rar
阅读(343) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~