代码重定位-------003链接脚本解析(重点:清除BSS段)
2019-04-23 14:31
127 查看
代码重定位-------003链接脚本解析(重点:清除BSS段)
对于BSS段,其内部存放的是初值为0,或者无初值的全局变量,如果有数以百计的初值为0的变量,则其会占用很大内存,所以程序运行时要对BSS段对应内存空间清零,要想对BSS段对应空间清零,我们需要知道BSS段空间地址是什么。
所以我们需要修改链接脚本:
bss_start = . ; 这个点表示bss段开始的当前地址
bss_end = . ;表示bss段结束得到当前地址
这样就可以知道bss段所在的地址。
然后修改start.S清除BSS段;
结果:
附录:
main函数:
子函数:
注:
如果不添加以下这两项,只是单纯的用上面c函数实现,则g_char会出现其它值而不会清零
相关文章推荐
- 韦东山嵌入式第一期学习笔记DAY_10——(总结自己理解的代码重定位原理)13_2_链接脚本的引入与简单测试
- Realview MDK中链接脚本详细解析
- 清除指定squid缓存文件的脚本代码分享
- U-Boot中关于TEXT_BASE,代码重定位,链接地址相关说明
- 【静态链接】第2章---------------------静态链接过程(符号解析与重定位)
- 数据库被注入 JS脚本 代码, 清除 方法
- [CSAPP-II] 链接[符号解析和重定位] 静态链接 动态链接 动态链接接口
- 脚本代码:实例解析Js+XML的操作方法
- 实现自动清除日期目录shell脚本实例代码
- 批量清除挂马网站的恶意脚本代码
- U-Boot中关于TEXT_BASE,代码重定位,链接地址相关说明
- ld链接脚本文件语法解析
- Realview MDK中链接脚本详细解析
- 微博短链接解析ShortUrl【PHP代码实现】
- U-Boot中关于TEXT_BASE,代码重定位,链接地址相关说明
- 韦东山嵌入式第一期学习笔记DAY_11——13_3_链接脚本的解析
- java清除所有微博短链接 Java问题通用解决代码
- Realview MDK中链接脚本详细解析
- u-boot链接脚本解析