|
|
|
|
 编译器的几个问题 - want_king [ 2006-04-19 00:48 | 344 byte(s)]
 Re: 编译器的几个问题 - want_king [ 2006-04-25 23:32 | 432 byte(s)]
 Re: 编译器的几个问题 - daiyuwen [ 2006-05-08 15:07 | 265 byte(s)]
 Re: 编译器的几个问题 - leviathan [ 2006-04-19 09:58 | 106 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
最近要用gcc,所以看了一下,有几个关于编译器的常识发现不是很清楚;
1、GCC 交叉编译时要指定目标机。但在GCC手册中目标机类型中没有ARM,而在GCC/config下有ARM;
应该说GCC可以编译ARM体系的程序。但ARM却不用区分ARM6/ARM7的型号,x86还分i386/i486等。其中的原因为何?
2、其他的几个问题我突然有点思路了,我在想想
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
|
arm不懂, x86从486有了fpu, gcc好根据一些类似与此的特性, 对代码做优化。 我猜测在386上用-mhard-fload就不行
|
|
|
----
我想我还是不习惯, 从默默无闻到有人喜欢。。。
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
原来总想的是嵌入式系统存储空间有限,编译器要知道实际的存储空间大小才能够使编译的代码不溢出。所以就认为编译器要知道的机器描述很具体,甚至能区分不同大小存储空间的计算机系统。
现在才发现这个想法有问题。编译器能对相同体系结构的计算机系统进行编译,而不用考虑内存的大小。这是因为GCC编译器针对的是拥有MMU的操作系统。ARM应该是相同体系结构的CPU。而嵌入式系统的编译器是操作系统编译器的移植,具有新的特点,比如要告之存储空间的大小。
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
|
我觉得这两者没有本质的区别。 你可以用link script 描述存储空间的大小和分布。 在通用的操作系统里,特别是有MMU的,应用程序使用的存储空间都是一样的,因此用同一个link script就可以了。 在没有操作系统的情况下,你就得自己写link script了。 除此之外,编译、连接没有什么不同。
|
|
|
[Original]
[Print]
[Top]
|
|
|