计算机是如何知道取出来的一条指令的操作码有多少位

努力修炼无限进步 2018-08-30 05:08:03
小弟初来乍到,没有分数给,大佬莫怪,谢谢 计算机是如何知道取出来的一条指令的操作码有多少位 是通过硬件来判断的吗,那我觉得如果在取指令之前,先告诉cpu,我的操作码有多少位,我的地址码有多少位,这样即使短操作码成为长操作码的前缀也并无大碍,只要把不同位数的二进制分别当成相应的操作码和地址码进行处理就行,可是事实上计算机并不是这样设计的,哪位大佬能告诉我为什么吗?
...全文
812 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 1 楼 天外怪魔 的回复:
一个字节一个字节取,根据编码的规则来判断当前指令共多少字节。
比如取到0x90,那么肯定就一个字节,对应NOP指令。
如到0xba,则后面肯定跟2个字节0x0000,对应MOV EAX, 0000
其他的类似。建议你看看编译原理,对你有好处。
原来涉及到编译原理的知识了,谢谢解答
天外怪魔 2018-08-31
  • 打赏
  • 举报
回复
一个字节一个字节取,根据编码的规则来判断当前指令共多少字节。
比如取到0x90,那么肯定就一个字节,对应NOP指令。
如到0xba,则后面肯定跟2个字节0x0000,对应MOV EAX, 0000
其他的类似。建议你看看编译原理,对你有好处。
一、什么是JVM  JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。  Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。二、JVM的组成我们先把JVM这个虚拟机画出来,如下图所示:从这张图中我们可以看出,JVM是运行在操作系统之上的,它与硬件没有直接的交互,我们再来看JVM由哪些部分组成,如下图所示:

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧