
运行在硬件之上的第一个程序是汇编程序吗 操作系统运行于汇编程序之上?我知道我错了 。。可是为什么?
每本书都是说的操作系统,(菜鸟迷惑~~望指点~~勿喷)但是操作系统是个程序吧(可以将操作系统看作一个很大的程序吧)既然是程序,那就是一条条代码累积起来的(可能是C语句,但...
每本书都是说的操作系统,(菜鸟迷惑~~望指点~~勿喷)
但是操作系统是个程序吧(可以将操作系统看作一个很大的程序吧)
既然是程序,那就是一条条代码累积起来的(可能是C语句,但我看了一下是少不了汇编的,纯C写不了操作系统的吧?)
既然是一条条的指令(高级语句或汇编指令),但是都不能被机器直接执行
(机器只能执行机器指令,其实将机器指令分解成微指令,在讲微指令分解为微命令,然后一个时钟脉冲——一组相容的微指令执行【耗费时间一个CPU周期】)
问题来了:“谁”将操作系统的语句转变为“机器指令”啊?
谢谢各位知友指点迷津。。。菜鸟感激不尽!我没财富了不好意思啊 展开
但是操作系统是个程序吧(可以将操作系统看作一个很大的程序吧)
既然是程序,那就是一条条代码累积起来的(可能是C语句,但我看了一下是少不了汇编的,纯C写不了操作系统的吧?)
既然是一条条的指令(高级语句或汇编指令),但是都不能被机器直接执行
(机器只能执行机器指令,其实将机器指令分解成微指令,在讲微指令分解为微命令,然后一个时钟脉冲——一组相容的微指令执行【耗费时间一个CPU周期】)
问题来了:“谁”将操作系统的语句转变为“机器指令”啊?
谢谢各位知友指点迷津。。。菜鸟感激不尽!我没财富了不好意思啊 展开
展开全部
我的理解,在开机到运行程序的过程中:
开机按钮按下>电源接通>BIOS芯片通电>启动BIOS自检程序>检测完毕从磁盘0磁道读取数据
此时操作系统所需服务被加载到内存中,根据操作系统不同,加载的服务不同
GNU/linux系统为linux内核,MAC OS 为混合内核,Windows为微内核
操作系统提供硬件驱动服务,文件管理服务,交互界面服务等等
操作系统与硬件的交互通过机器语言,一般是PC,则采用8086指令集与CPU传输数据
指令集是二进制代码,故机器能够识别,CPU在一个周期内只能识别固定字长的指令
程序的执行可以最终是靠的指令的执行,而将源程序转化为二进制代码的就是编译器
编译器根据指令集的规定,将程序汇编为机器语言
操作系统的关键部分就是可执行文件,开机时加载进内存,被CPU直接执行(也许)
开机按钮按下>电源接通>BIOS芯片通电>启动BIOS自检程序>检测完毕从磁盘0磁道读取数据
此时操作系统所需服务被加载到内存中,根据操作系统不同,加载的服务不同
GNU/linux系统为linux内核,MAC OS 为混合内核,Windows为微内核
操作系统提供硬件驱动服务,文件管理服务,交互界面服务等等
操作系统与硬件的交互通过机器语言,一般是PC,则采用8086指令集与CPU传输数据
指令集是二进制代码,故机器能够识别,CPU在一个周期内只能识别固定字长的指令
程序的执行可以最终是靠的指令的执行,而将源程序转化为二进制代码的就是编译器
编译器根据指令集的规定,将程序汇编为机器语言
操作系统的关键部分就是可执行文件,开机时加载进内存,被CPU直接执行(也许)
追问
嗯 比如用C语言编写好了一个操作系统,首先第一步是将操作系统变为可执行程序,即:
将原来的高级语言变为——机器指令(二进制形式)。
——那么,这个工作一定需要借助另一台机器上的编译器,是这样吗?
追答
对了,去了解了下,可执行文件不是仅仅依靠指令来执行,还要用到系统的函数,内存的分配
这些是要靠操作系统来分配的,所以不同系统的可执行文件是不能互用的,因为系统的结构不同
所以比如:
#include
int main()
{
printf("helloworld!");
}
在wnidows下和linux下编译出的可执行文件调用的函数库是不同的
系统的运行是建立在指令系统之上的
展开全部
程序--高级语言--汇编语言--二进制机器码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
对于来说,都是二进制的代码!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比尔盖茨
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询