打印
[嵌入式linux]

编译器如何编译程序的?

[复制链接]
1895|8
手机看帖
扫描二维码
随时随地手机跟帖
沙发
sinanjj| | 2009-7-9 12:35 | 只看该作者

不清楚

本人能力有限。。。。。哪位高人解释下。

使用特权

评论回复
板凳
一朝成名| | 2009-7-9 12:50 | 只看该作者

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

平时太忙

使用特权

评论回复
地板
syw501| | 2009-7-9 18:41 | 只看该作者

程序空间

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

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

稍微说了那么一点。。如果你了解一下汇编语言就什么都知道了

使用特权

评论回复
5
leonlais|  楼主 | 2009-7-9 20:17 | 只看该作者

回复楼上

main 函数里面的局部变量 和 在mian里面调用的函数里的局部变量 如何申请栈的呢?

使用特权

评论回复
6
high| | 2009-7-10 08:04 | 只看该作者

先进后出

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

sinanjj, chrome os这么火,这里居然没有热议? :)

使用特权

评论回复
7
李冬发| | 2009-7-12 00:53 | 只看该作者

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

编译原理仅是其中的一个部分,还有库的组织和链接等等的一大堆问题。

使用特权

评论回复
8
sinanjj| | 2009-8-4 14:52 | 只看该作者
关键是涉及到很多细节。

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

比如溢出攻击。。。

计算精确的指针错误

使用特权

评论回复
9
sinanjj| | 2009-8-4 14:54 | 只看该作者
chrome os

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

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

当然,让它彻底开源也是应该的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

26

帖子

0

粉丝