在寻找源代码,字节码,汇编代码,机器代码,编译器,链接器,解释器,汇编器以及所有其他含义之间的各种差异时,我仅对字节码和汇编代码之间的差异感到困惑。

特别是,这篇维基百科文章中描述CIL的介绍使我感到困惑,因为它似乎可以同时使用两个术语(汇编代码和字节码),这让我认为它们的含义可能完全相同。

如果您可以阅读Andrew Tanenbaums《结构化计算机组织》一书,他将在技术上正确定义这两个术语。

另请参见 这个关于Java的类似问题的答案。

另请参阅stackoverflow.com/questions/17511931/what-exactly-is-bytecode

汇编代码通常确实意味着机器的本机语言(所谓的机器语言)的人类可读形式。另一方面,字节码通常是一种可由字节码解释器解释的语言-因此它不是处理器的本地语言。

为什么会那么混乱呢?您无法通过这种方式将汇编语言与字节码进行比较。当然,字节码也可以具有汇编代码-表示其为人类可读的形式,因为"汇编语言"不一定意味着它适用于真实机器-而是某些本机语言的人类可读形式。 -对于处理器,此本地语言是机器代码-但您也可以具有伪(或解释)机器的汇编代码,例如Bytecode。

也可以看看:

汇编语言

当然,更麻烦的是-就像您在此处的所有讨论中所看到的-因为IT人员(也是我自己)往往措辞松懈。在谈论机器代码时,经常使用"汇编语言"。当然这不是完全正确的,因为汇编语言只是某些机器代码的人类可读形式。

IT人员所做的(希望)是从形式中抽象出来。执行机器代码和汇编之间的映射是为了针对目标受众,CPU或人员进行优化。

Assembly code通常用于指代代码,这些代码一旦编译为Machine Code,就可以由CPU在虚拟机中的bytecode中执行。

CIL引起的混乱可能与以下事实有关:CPU X的Machine Code可以由运行在CPU Y上的虚拟机解释(例如)。

请注意,可以设计虚拟机实现来解释任何机器码和/或字节码:它留给开发人员及其期望(和时间);-)

再次:汇编代码不是由真正的CPU执行的。执行的是"机器代码"。汇编代码是机器代码(或在某些情况下:字节码)的人类可读形式。

我记得,自从微控制器和微处理器问世以来,"汇编"一词就以一种人类可读的方式来表示机器代码。

在我看来,Microsoft通过使用相同的单词" Assembly"来命名其dotNET Framework编译器生成的ByteCode引起了混乱。

因此,在这种情况下,我想说的是,"字节码"对Java运行时的含义类似于对Microsoft dotNET运行时环境的"汇编"一词的新用法。

我认为这是错误的吗?

汇编代码可以在具有特定指令集的CPU上运行,而字节码可以在任何可以运行VM的CPU上的虚拟机(例如Java运行时)中执行。

"汇编代码"也称为"机器代码",仅作说明。请参阅我的答案中的链接。

当您指的是"汇编代码"时,这当然不是机器代码,因为它必须首先由汇编器"汇编"-结果不是机器代码。

汇编器是一种宏语言。这是用于指示CPU或其他设备的一组指令。它被翻译成机器可读的机器指令。

字节代码是要解释的虚拟机的指令,在执行之前仍需要转换为机器代码。

汇编程序不一定是宏语言。基本形式的汇编器只是机器可读的形式。

汇编代码是(表示)您正在编程的处理器的本机代码。

字节码是"命令"的二进制版本的术语,该二进制版本被编译为由解释程序或虚拟机执行。

本质上,字节码定义了虚拟处理器的操作码,而汇编则由物理处理器的操作码组成。 (我们现在将暂时忽略CPU内部的微代码:-))

不完全正确。汇编代码是机器代码的人类可读形式。机器代码是处理器的本机代码。

@Juergen,您可以混合使用形式和内容,这取决于细节或上下文,它决定了诸如" cpu操作码","机器语言","汇编程序"之类的术语。在OP问题的背景下,它们是同等的恕我直言。

恕我直言,您将事情混为一谈,因为IT人员的措辞通常很松懈,所以事情变得混乱。汇编语言是某些机器语言(也可以是虚拟机-例如字节码)期间的人类可读表示。请参阅我在答案中链接的维基百科文章。

java字节码和汇编指令_汇编代码和字节码有什么区别?相关推荐

  1. mo汇编指令_汇编指令大全

    一.数据传输指令 ─────────────────────────────────────── 它们在存贮器和寄存器.寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. MOV 传送字或字 ...

  2. 汇编语言中xor指令_汇编各类指令用法及含义分析 - 全文

    什么是汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指 ...

  3. ARM 汇编指令对应的机器码和条件码

    一.ARM 汇编指令对应的机器码 二.条件码

  4. 汇编指令mrs_汇编指令 - Mrs.kang - 博客园

    1.debug的常用命令 1.r命令 查看.修改CPU中寄存器的值 -r :查看寄存器的值 -r  cs :修改寄存器cs的值 2.D命令 查看内存中的内容 1.-d  段地址:偏移地址 -d 100 ...

  5. att格式汇编指令_ATT汇编语法简介

    这里,我们介绍三种类型的ATT汇编指令操作数的表示方法,其中指令参考对应体系的指令集(ISA). 第一种类型是立即数(immediate),其书写方式是'$'后面跟一个用标准C表示法表示的整数,比如$ ...

  6. 指令 机器指令 汇编指令 指令系统 汇编指令的基本构成 操作数

    指令:空值计算机完成特定操作的命令 机器指令:指令的二进制代码形式 汇编指令:指令的助记符形式 指令系统:机器所有指令的集合 8086指令系统:向后兼容,应用广泛 汇编指令的基本构成: 操作码 目的操 ...

  7. att格式汇编指令_ATT 汇编语法

    在研华的pc104上使用看门狗要使用汇编.使用汇编来修改CMOS里面的参数.也就是内联汇编. linux下gcc只支持ATT汇编.所以这儿有必要将ATT语法学习学习.以后需要的时候翻出来温习温习. 1 ...

  8. 工业机器人演示码垛和卸垛_浅谈饲料自动码垛机的应用及正确操作方法

    说到码垛机,大家脑海中反应的,大概是机械手码垛机吧.其实码垛机可以分为好多种,常见的就是机械手码垛机和高位码垛机.码垛机的用途非常广泛,可以适用于不同车间生产,大大推动工业自动化的前进.今天我们就来说 ...

  9. 码云如何下载历史版本代码_git和码云的使用

    码云是开源中国社区2013年推出的基于 Git 的完全免费的代码托管服务,这个服务是基于 Gitlab 开源软件所开发的,我们在 Gitlab 的基础上做了大量的改进和定制开发,目前已经成为国内最大的 ...

最新文章

  1. Go 代码中如何绑定 Host
  2. (转) 干货 | 图解LSTM神经网络架构及其11种变体(附论文)
  3. shell脚本小技巧
  4. 【求助】AIX5.3主机下 memcached的内存使用异常
  5. PTA 三足鼎立 (lower_bound()+upper_bound())
  6. 复述-软考网规--云计算专题
  7. 一个使用Jmeter做接口性能测试的实战案例
  8. python爬虫步骤-python爬虫步骤 (新手备学 )爬虫编程。
  9. Apache OpenNLP下载
  10. 阿里邮箱怎么开通pop3服务器,云邮箱如何在IPAD上设置POP3/IMAP协议?
  11. Prolog入门教程
  12. qiime2 学习 测序公司返回合并后的数据后续处理
  13. zlib——Usage Example翻译
  14. html语言左对齐是什么,html - 如何左对齐标签?
  15. 从零开始研发GPS接收机连载——8、跟踪调试之遇到瓶颈
  16. Android 9.0 framework 授予安装未知来源应用权限(去掉未知来源弹窗)
  17. 计算机主机内部结构连接,OPS电脑与显示器之间的连接结构的制作方法
  18. 高考导数大题中的双变量不等式问题的求解思路
  19. window8 添加美式键盘
  20. 出牌,用程序判断手中的牌是否能够压过对方出牌

热门文章

  1. 今天是教师节,祝所有老师节日快乐!
  2. webpack构建时堆内存溢出解决办法
  3. 使用matplotlib绘制简单图表第二课
  4. 解毒 Kotlin Koans: 03 函数参数、重载
  5. 关于onscroll函数兼容各浏览器的方法分析
  6. 服务器迁移操作系统,服务器操作系统迁移
  7. 基于Java实现QQ登录和微博登录
  8. 01-防火墙智能选路
  9. Oracle设置表空间自动增长
  10. 期货资管系统都有哪些功能?