黑马程序员技术交流社区

标题: 谁能解释下机器码和字节码之间的区别? [打印本页]

作者: 朱玉玺    时间: 2013-2-13 15:57
标题: 谁能解释下机器码和字节码之间的区别?
本帖最后由 朱玉玺 于 2013-2-13 20:54 编辑

什么是机器码?什么是字节码?它们的作用、联系 和区别是啥?   解释越通俗越简单越好~可能这个问题跟编程没直接的关系,但我觉得它对理解java内存模型很有必要~

作者: 杨玲    时间: 2013-2-13 16:31
哈,机器码就是说计算机能读懂的代码,简单点说就是给计算机执行的二进制代码.
字节码,是JAVA语言专有的,它是让JVM来执行的二进制代码
虽然都是二进制代码,但是由于执行它的哥们不一样,所以它们存在一些指令集上的区别
作者: 王晓斌    时间: 2013-2-13 17:10
一,机器码,完全依附硬件而存在~并且不同硬件由于内嵌指令集不同,即使相同的0 1代码 意思也可能是不同的~换句话说,根本不存在跨平台性~比如~不同型号的CPU,你给他个指令10001101,他们可能会解析为不同的结果~
二,我们知道JAVA是跨平台的,为什么呢?因为他有一个jvm,不论那种硬件,只要你装有jvm,那么他就认识这个JAVA字节码~~~~至于底层的机器码,咱不用管,有jvm搞定,他会把字节码再翻译成所在机器认识的机器码~~~
作者: 朱玉玺    时间: 2013-2-13 18:01
杨玲 发表于 2013-2-13 16:31
哈,机器码就是说计算机能读懂的代码,简单点说就是给计算机执行的二进制代码.
字节码,是JAVA语言专有的,它是 ...

那么二进制码能直接对机器进行操作?就像机器码一样?
作者: 朱玉玺    时间: 2013-2-13 18:04
王晓斌 发表于 2013-2-13 17:10
一,机器码,完全依附硬件而存在~并且不同硬件由于内嵌指令集不同,即使相同的0 1代码 意思也可能是不同的 ...

那么岂不是硬件的机器码一变化虚拟机就要修改?是不是它先作用与系统,然后系统再作用于硬件?jvm是硬件相关还是系统相关的?
作者: 杨玲    时间: 2013-2-13 18:42
朱玉玺 发表于 2013-2-13 18:01
那么二进制码能直接对机器进行操作?就像机器码一样?

呵呵,机器码就是0101这样的二进制代码嘛,而二进制码要想操作机器就需要相应的指令系统,而指令系统就是对二进制代码所表示意思的规定,比如0表示某个开关关,1表示某个开关开这样的.关于这一部分属于硬件部分了.有兴趣可以看操作系统中关于指令系统的知识!
作者: 朱玉玺    时间: 2013-2-13 18:47
杨玲 发表于 2013-2-13 18:42
呵呵,机器码就是0101这样的二进制代码嘛,而二进制码要想操作机器就需要相应的指令系统,而指令系统就是对 ...

对这块稍微清晰了一些~,对硬件真心不懂,看来还得拓展知识面~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2