编译电脑系统-编译系统软件
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语言又可以用来开发更高级的编译器,更高级的编译器又可以拿来开发操作系统了,只要你喜欢。
不同的是汇编直接写的执行效率比较高,高级语言写的执行效率比较低,但是高级语言开发的时间比较短,提高工作效率
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。