关于void clean_bss(void)中的疑问

[复制链接]
3713|6
 楼主| yannzi 发表于 2009-2-9 22:01 | 显示全部楼层 |阅读模式
void&nbsp;clean_bss(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;extern&nbsp;int&nbsp;__bss_start,&nbsp;__bss_end;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;*p&nbsp;=&nbsp;&__bss_start;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(;&nbsp;p&nbsp;&lt&nbsp;&__bss_end;&nbsp;p++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*p&nbsp;=&nbsp;0;<br />}<br />函数中__bss_start,&nbsp;__bss_end;是哪里来的?<br />有什么物理意义吗?<br />是用来干什么的?<br />谢谢
阿南 发表于 2009-2-10 01:46 | 显示全部楼层

应该是环境内部定义的

  
high 发表于 2009-2-10 01:51 | 显示全部楼层

可能是编译器提供的 段地址信息

  
 楼主| yannzi 发表于 2009-2-10 09:40 | 显示全部楼层

稍微多了点了解,谢谢

  
 楼主| yannzi 发表于 2009-2-10 09:54 | 显示全部楼层

好像在.lds文件中找到了,不过不是很了解。

&nbsp;&nbsp;&nbsp;&nbsp;__bss_start&nbsp;=&nbsp;.;<br />&nbsp;&nbsp;&nbsp;&nbsp;.bss&nbsp;ALIGN(4)&nbsp;&nbsp;:&nbsp;{&nbsp;*(.bss)&nbsp;&nbsp;*(COMMON)&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;__bss_end&nbsp;=&nbsp;.;<br /><br />能告诉我这是属于什么方面的知识吗?<br />能从哪里学习。
dld2 发表于 2009-2-10 10:12 | 显示全部楼层

编译、连接

这是连接器(linker)设置。<br /><br />C程序编译连接后一般生成以下程序段:<br />&nbsp;&nbsp;&nbsp;text段(RO):代码<br />&nbsp;&nbsp;&nbsp;data段(RW):初始化数据<br />&nbsp;&nbsp;&nbsp;bss段(ZI):未初始化数据。<br /><br />一般初始化时要把BSS段全部清零。
sxggj 发表于 2009-2-10 11:22 | 显示全部楼层

文件生成目录下应该有个.map的文件,那里面有这个两值

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

26

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部