指令集和汇编语言的联系

来源:百度知道 编辑:UC知道 时间:2024/05/27 07:43:07
为何不同的操作系统可以在同一个cpu上运行,不同的操作系统是利用什么最本质的东西来编写的?利用指令集吗?指令集和汇编指令有联系吗?api和指令集有联系吗?麻烦详细解释一下!

你的理解有问题,操作系统是运行在机器上面的。
机器不仅包括CPU还包括内存和只读存储器。

对于一般的机器,当你通电以后,CPU收到Reset信号。此后通过硬件连接,
CPU运行位于只读存储器中的BIOS,BIOS运行结束时寻找标志AA55(操作系统
标记)。所有的操作系统都使用相同的标志,这个标志的具体内容是在BIOS启动
的规范文档里面规定的。

操作系统在启动时的共同点就是那个AA55的标记,你只要有这个标记自己也可以写个简单的启动。

指令集是依附CPU的,一个CPU可以支持一个或者多个指令集。目前家用电脑都支持80386的指令集,所以操作系统的启动部分就是使用的80386的指令集。

API是运行在操作系统上的程序调用操作系统程序的接口,实际上就是一
些编号,基本上就是
调用Windows的XXXX号功能,参数是……
Windows里面有些API有文档和名称,有些没有。那些就可以有隐藏功能。

程序中调用API,最终会在内存中形成一个80386指令集中的JUMP指令。
具体过程需要你了解80386汇编

指令集 一般是说 CPU支持的指令以及编码(机器码)
比如 JUMP 有 EA / EB 等等。

汇编语言编译器会根据情况把JUMP翻译成EA/EB,而不必每次人都去输入那些
难懂的机器码。

所有的程序最终以机器码流的形式进入CPU被处理。

1.现代操作系统绝大多数代码都是用C语言写的,只有少量直接和硬件打交道的代码是用汇编语言写的。把操作系统源代码转换成cpu对应的机器码(指令)那是编译器和汇编器的事。
2.至于你问“利用指令集吗?”,我就不懂了。你不运行指令,怎么操纵cpu呢?你运行的指令当然就是指令集里的指令了,否则cpu也不认识啊,是不是?
3.指令和汇编语言有什么联系那是汇编器的事情。汇编语言是一类编程语言,而cpu能执行的只有指令,汇编语言通过汇编器的编译能生成指令(机器码)。问这个问题和问“C语言和exe文件有联系吗”答案是一样的。当然,不同的汇