我想问比较底层的问题,跟CPU打交道的那部分操作系统,是不是只能由汇编语言开发?
CPU里是不是内设了机器语言和汇编语言的转换编译器?
------解决思路----------------------
1、“跟CPU打交道的那部分操作系统”,这句话不严谨,在所有系统软件和应用软件中,不存在不和CPU打交道的代码。
我这样回答看行不行,首先CPU只能执行机器码,汇编指令和机器码是一一对应的,也就是说汇编指令可以直接操作CPU,调用CPU的所有功能、指令集等。但是汇编程序是面向机器语言的,是CPU的“思维方式”,它和人的思维方式相差太大,随着程序规模不段扩大,如果使用汇编语言开发,那将是不可想想的。
模块化和面向对象等人类思维方式在汇编语言中就很难实现,但是我们可以把问题简单化,将庞大的逻辑思维分解成很多小巧的逻辑步骤,用汇编语言程序将其实现,并给它们起个名字,规定它们的使用方法,这时其它编程语言就出现了。例如C语言的IF、FOR、WHILE等指令都是汇编语言实现的。汇编程序提供了底层与硬件交互的功能,供其它高级语言使用。
这时我们就明白汇编语言和其它语言要在什么地方使用了,当需要使用底层的功能时,或硬件出现改动时,而高级语言没有相应的功能支持,我们就需要用汇编语言来实现相应的功能,并给它起个名字,规定它的使用方法,在高级语言中调用就可以了。
2、CPU只能执行机器码,汇编程序在编译链接过程中就将汇编指令翻译成机器码,并生成可执行文件,汇编程序的源代码是不能运行的,所以CPU内部也不会有汇编语言的转换器。