[嵌入式linux] 编译器如何编译程序的?

[复制链接]
2894|8
 楼主| leonlais 发表于 2009-7-8 21:20 | 显示全部楼层 |阅读模式
如题!!它是如何区分代码段和数据段,如何为它们分配地址?
sinanjj 发表于 2009-7-9 12:35 | 显示全部楼层

不清楚

本人能力有限。。。。。哪位高人解释下。
一朝成名 发表于 2009-7-9 12:50 | 显示全部楼层

周末准备开个小课题,关于编译方面的东东

平时太忙
syw501 发表于 2009-7-9 18:41 | 显示全部楼层

程序空间

程序编辑后包括:代码,只读数据,可读可写数据
程序运行时还有栈
字符串一般存储在只读数据区钟,程序代码指向地址
外部变量存储在可读可写数据区钟
静态变量不管在函数外申请还是函数内申请都存储在可读可写数据区钟
和外部变量的区别是,一般静态标量要求初始化值为0

最难理解的是局域变量,局域变量存储在栈中,调用一个函数时,栈以当前空余位置开始开辟一定得空间来存储这个函数的局域变量,在函数完成后,栈收回这些空间。局域变量就不存在了。再调用另外的函数时就有可能覆盖前一个函数的数据。所以局域变量可以将局域变量地址向下传供调用的函数使用它的变量,但是被调用的函数不能把它的局域变量地址传给调用函数使用。

稍微说了那么一点。。如果你了解一下汇编语言就什么都知道了
 楼主| leonlais 发表于 2009-7-9 20:17 | 显示全部楼层

回复楼上

main 函数里面的局部变量 和 在mian里面调用的函数里的局部变量 如何申请栈的呢?
high 发表于 2009-7-10 08:04 | 显示全部楼层

先进后出

stack并不需要申请。 heap才需要申请。

sinanjj, chrome os这么火,这里居然没有热议? :)
李冬发 发表于 2009-7-12 00:53 | 显示全部楼层

这个问题,得写几大本书。

编译原理仅是其中的一个部分,还有库的组织和链接等等的一大堆问题。
sinanjj 发表于 2009-8-4 14:52 | 显示全部楼层
关键是涉及到很多细节。

大体的知识估计大家都理解,但具体咋实现的,有什么可以鼓捣的,

比如溢出攻击。。。

计算精确的指针错误
sinanjj 发表于 2009-8-4 14:54 | 显示全部楼层
chrome os

本来我想说:google又干这种linux换名的事很不地道。

看了看bing的中文过滤,看了看CCAV,我绝定了,不管google出啥我都支持了,

当然,让它彻底开源也是应该的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

26

帖子

0

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