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

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


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


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


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


最后如果不同CPU指令集和操作系统接口都标准化,那么才能实现一次编译成汇编,到处运行吧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值