1.我们都知道windows操作系统是用c语言编写的,但是我们一般在编译c的时候需要安装专门的执行环境!那么我们

2.普及知识!跪求答案! 操作系统是怎么开发、编译(怎么编译的?)并且运行在设备上(这个问题的意思是

3.如果操作系统是C语言开发的,那么C编译器运行在什么上呢?

我们都知道windows操作系统是用c语言编写的,但是我们一般在编译c的时候需要安装专门的执行环境!那么我们

编译电脑系统-编译系统软件

不是的,我们平常用的Windows系统是已经在微软那边编译好了的可引导文件,平常我们安装系统的时候没有也不需要把C的执行环境安装进去,因为Windows也不是单纯的用C语言编写的,在C语言编写的功能实现之前,还有一个是用汇编编写的内核要首先执行,之后才能运行C语言编写的功能!还有,C语言是纯编译的计算机语言,一般不用C的执行环境!C语言不像VB和C#之类的编程语言一样,两者有本质上的区别!

普及知识!跪求答案! 操作系统是怎么开发、编译(怎么编译的?)并且运行在设备上(这个问题的意思是

就我知道的向你说一说:

1,操作系统用的是c语言开发的:

但这c语言和普通的c语言是有区别的,不能使用库函数。

这个c语言的编译器也和普通的编译器有区别的。《30天自制操作系统》-用的是开源的c编译器并且经过修改的。

2,第一扇区的bootstrap

bootloader或者说bootlstrap是用汇编语言写的

但是这个汇编器和拿来开发应用程序也是有区别的,

就拿汇编中的伪指令org和dup应用程序的汇编编译器是无法达到想要的目的的。

如果第一扇区是启动分区,那么对应的最后两个字节为511-0x55AA

bootloader开始就是一条跳转指令0xeb开头的后面是偏移量,紧接着就是这个媒介的配置信息

,紧接着才是我们要写的16bit的汇编语言。

这里要做的事就是:

读取硬盘上的数据放到内存中准备运行,保存配置数据,由16bit实地址模式切换到32模式。。。

本人原来照葫芦画瓢画过。

但是切换到32bit下要用到内存保护机制,内存映射机制,虚拟内存机制。。。这些和计算机硬件的密切相关。无奈本人了解的计算机硬件一般都是十六位的,而且大多与概念相关。

而且对于的intel指令手册都是英文的,总而言之能力有限无法进行下去。

如果要开发操作系统,以我看:

计算机组成原理特别是32bit下的内存映射保护相关内容必须知道

汇编和c语言那时必须的会

耐心时间

推荐书籍《30天自制操作系统》

通过开发操作系统可以加深 汇编与计算机硬部件 汇编和c语言 相关连的理解。

如果你想试一试可以在虚拟机下玩一玩。

——以上内容仅供参考——

如果操作系统是C语言开发的,那么C编译器运行在什么上呢?

操作系统是c开发的,跟c编译器运行在机器上,这两个问题一点关系都没有。

在没有c编译器之前的那个时代,当然只能用汇编写操作系统了,但是后来用汇编开发了c编译器,就可以用c写操作系统了,用c写了操作系统,经过c编译器编译之后得到的就是机器代码(可以认为是汇编),c编译器只是一个工具,反正你给机器代码给cpu执行就行了,没有任何问题呵呵

这就好比如在原始社会人类只能用手挖东西,挖了铁以后就可以用铁做出铁器来挖东西,就是这么发展。

c语言又可以用来开发更高级的编译器,更高级的编译器又可以拿来开发操作系统了,只要你喜欢。

不同的是汇编直接写的执行效率比较高,高级语言写的执行效率比较低,但是高级语言开发的时间比较短,提高工作效率