您的位置:首页 > 其它

操作系统笔记-关于指令集的理解

2018-01-18 13:53 232 查看
为什么java不翻译成汇编语言,然后能一次翻译,多地运行。因为程序不光要翻译成机器指令,还要调用操作系统的系统调用接口,控制硬件。不同操作系统的接口不同,所以不能。需要java虚拟机来对接各个系统

关于汇编语言
汇编语言和不同CPU的机器码一一对应的,二者也叫作指令集,是不同的表达方式,描述CPU的功能。不同CPU的汇编语言基本相同,即实现的功能基本相同,但具体机器码可能很大不同,而操作系统最底层内嵌了不同CPU的机器码,所以可以支持不同的CPU(汇编语言需要编译)
若是指令集相差很大的CPU,如果用比汇编高一级的语言编写程序,就会更省事,把高级语言编译为不同汇编语言,就能写一套程序运行在不同CPU上,这就是操作系统用c语言编写的原理。并且高级语言语法也更简单

所以说若是没有操作系统,那就可以自己编写代码随意控制硬件,那么直接编译成汇编语言就可以一次编译,多次运行了。但是应用程序没有权限直接使用硬件

指令集,翻译成指令集和使用指令集是两个方面。使用指令集要把翻译完的程序从内存加载到CPU,需要操作系统。这就解释了开头的问题。那么Java虚拟机的指令集就是Java中间码,提供硬件的功能描述,猜想是同时包括CPU指令集和操作系统接口的抽象。不同操作系统(微机)为应用程序提供的服务功能应该是基本相同的

最后如果不同CPU指令集和操作系统接口都标准化,那么才能实现一次编译成汇编,到处运行吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: