s****b 发帖数: 2039 | 1 据说因为linux主要是用C语言写的。而C语言是portable的,因为C的compiler也是用C
写的。
但是俺想,C的compiler的compiler。。。。。。最后总要有一个是machine dependent
的啊,那么portable是怎么实现的呢? |
j*a 发帖数: 14423 | 2 c的compiler几乎在所有平台都有;c语言有标准
C
dependent
【在 s****b 的大作中提到】 : 据说因为linux主要是用C语言写的。而C语言是portable的,因为C的compiler也是用C : 写的。 : 但是俺想,C的compiler的compiler。。。。。。最后总要有一个是machine dependent : 的啊,那么portable是怎么实现的呢?
|
s****b 发帖数: 2039 | 3 如果有个公司出一个新的CPU,怎样做一个新的C compiler呢?
Thanks!
【在 j*a 的大作中提到】 : c的compiler几乎在所有平台都有;c语言有标准 : : C : dependent
|
b*******s 发帖数: 5216 | 4 做处理器的就那么几家,就像主流编译器就那么几个
相互之间合作是比较紧密的,在产品上市前已经合作了相当时间了
【在 s****b 的大作中提到】 : 如果有个公司出一个新的CPU,怎样做一个新的C compiler呢? : Thanks!
|
d****i 发帖数: 4809 | 5 C语言的国际标准是ANSI, ISO, 然后对于操作系统来说,内核都是C写的然后编译出来
,kernel到userland, UNIX类操作系统都支持POSIX标准,然后对于用在嵌入式实时操
作系统,除了标准的ANSI,POSIX以外,还加了适用于有自己操作系统特色的东西,所
以C可以用在任何大大小小的OS上。
C
dependent
【在 s****b 的大作中提到】 : 据说因为linux主要是用C语言写的。而C语言是portable的,因为C的compiler也是用C : 写的。 : 但是俺想,C的compiler的compiler。。。。。。最后总要有一个是machine dependent : 的啊,那么portable是怎么实现的呢?
|
d****i 发帖数: 4809 | 6 这个需要芯片生产商提供这种CPU的指令集,这样编译器就可以把C编译成对应于这种
CPU架构的机器码指令。比如ARM就有自己的编译器armcc,当然也可以用gcc for ARM,
据说前一种出来的更高效优化一点。
【在 s****b 的大作中提到】 : 如果有个公司出一个新的CPU,怎样做一个新的C compiler呢? : Thanks!
|
n****1 发帖数: 1136 | 7 linux的portable只是相对于70年代之前的各种OS而言吧. 之后的unix/bsd/linux都是C
写的,可移植性也差不了太多.
最关键的是写软件的人是否注重可移植性,是否希望自己的软件被移植到千奇百怪的硬
件上. 微软就是典型反面教材 |
t*******y 发帖数: 1289 | 8 我对这个portable的理解是:
1. 内核的可定制裁剪。
2. 代码开源,而且要求对代码的改动也要开源。
3. 内核的开发由一个非常有领导能力的人带领。
我发而觉得和用C没太大的关系,要说有关系的话,也是因为和硬件打交道的比较熟悉C
是C
【在 n****1 的大作中提到】 : linux的portable只是相对于70年代之前的各种OS而言吧. 之后的unix/bsd/linux都是C : 写的,可移植性也差不了太多. : 最关键的是写软件的人是否注重可移植性,是否希望自己的软件被移植到千奇百怪的硬 : 件上. 微软就是典型反面教材
|
n****1 发帖数: 1136 | 9 做CPU的恨不得所有OS都能移植到自己硬件上,而且做OS的不是竞争对手而是合作对象.
用专利打压非同行纯属犯2 |
n****1 发帖数: 1136 | 10 如果是新平台新架构, 没人会帮你写编译器的, 这公司得自己动手写编译器交付客户使
用. 大多数公司没实力单独开发维护编译器, 所以就靠在gcc这大树下乘凉了, 当然自
己那点代码也就得开源了.
等你做大了,经过市场考验了, 就会有人帮你提高代码了, 或者你也可以开始弄闭源编
译器了. 没市场份额的话, 开源也没人鸟你.
【在 s****b 的大作中提到】 : 如果有个公司出一个新的CPU,怎样做一个新的C compiler呢? : Thanks!
|
l*****s 发帖数: 2109 | 11 底层都是用汇编写的,说白了,用汇编设置一个c的运行环境,再交给c,c再设置一个
kernel的运行环境,再交给kernel。
所谓移植性,就是设计的时候把主体部分和硬件隔离开,硬件相关部分很少,交给厂商
或底层开发者完成。
C
dependent
【在 s****b 的大作中提到】 : 据说因为linux主要是用C语言写的。而C语言是portable的,因为C的compiler也是用C : 写的。 : 但是俺想,C的compiler的compiler。。。。。。最后总要有一个是machine dependent : 的啊,那么portable是怎么实现的呢?
|
l*****s 发帖数: 2109 | 12 至于c的编译器,完全可以用交叉编译器产生目标代码,或者干脆编译一个目标编译器
,在目标硬件上运行这个目标编译器。
C
dependent
【在 s****b 的大作中提到】 : 据说因为linux主要是用C语言写的。而C语言是portable的,因为C的compiler也是用C : 写的。 : 但是俺想,C的compiler的compiler。。。。。。最后总要有一个是machine dependent : 的啊,那么portable是怎么实现的呢?
|