汇编语言 高级语言 机器语言 本地代码

无论是什么语言,最终都会转化为机器语言(本地代码)(机器码),计算机程序的运行最终还是以机器语言(本地代码)(机器码)运行的。

汇编语言:

汇编语言是低级编程语言,不像高级语言有跨平台性,首先,CPU的的工作是靠机器语言(本地代码)(就是指令集,ISA),而这些指令有些是cpu独占的,而有些是必须要被外界访问的,比如让cpu做加法运算,谁加谁是cpu无法决定的,就必须通过外界指定才可以运算。于是问题出现了,用机器码控制cpu太难了,只有0和1,编程人员要费很大劲!于是汇编语言应邀而生。它是文字形式的,程序员写完程序后通过汇编器(类似于高级语言的编译器)将文字转化为机器码,于是程序就可以控制cpu了,因此汇编语言很依赖cpu,i386的汇编程序只能运行在支持i386体系的cpu上,苹果PowerPC汇编程序只能运行在苹果机上。这也就是为什么Windows程序不能运行在苹果机上,就是一位互相的汇编指令集不同,从而机器码不同。

机器语言、汇编语言不仅跟cpu有关系,而且和系统也有关系。

C、C++、C#、java等语言都是高级编程语言。

C语言是跨平台的,不过是“源码级”跨平台。本来就是存在针对linux、windows的不同的编译器。C语言在window编译成的机器语言,是无法在linux系统运行的,因为机器语言和系统、cpu有关系,需要在linux系统用相应的编译器重新编译,才能在linux系统上运行,而java主要是依赖于jvm虚拟机,编译后,不同的系统都有对应的jvm虚拟机,就可以直接运行,所以有C语言“一次编写,到处编译”,Java是“一次编译,到处运行”的说法。

但是jvm虚拟机是一边把java字节码逐一转换为本地代码一边运行的,存在着运行速度的问题,jvm虚拟机每次运行时都要把字节码变换为机器语言,这一机制是造成运行速度慢的原因,为此,目前业界也在努力改善这一问题,比如把首次变换后的本地代码保存起来,第2次以后直接利用本地代码,或是对字节码中处理较为费时的部分进行优化()改善生成的本地代码质量)等。这样的操作方法看上去有些迂回,但由此可以实现同样的字节码在不同的环境下直接运行。

如C++创始人酸溜溜的说法,JVM造了一个新的平台,让所有Java程序只能在这个平台上运行,而C和C++的代码可以在几十个不同的平台上运行,从这个角度而言,C和C++是跨平台的,而Java不是

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值