• cpu与指令集


    讨论一下

    作为一个java程序员,我们都知道,当我们写完代码,java文件会被编译为class文件,然后交给jvm去执行,那么这个执行过程是啥样的呢??
    一般我们得到的解答都是,class代码会被解释(或者编译)成机器码,然后机器就知道如何运行了。

    当你去查jvm是如何执行我们的代码的,一般回答到“机器码”就结束了,这是令我最不能理解的地方,怎么?计算机不认识我的java代码,就能认识机器码了?机器码是个啥玩意儿??

    机器码

    我们来了解一下机器码是什么,来看一下维基百科的解释:

    机器语言(machine language)是一种指令集的体系。这种指令集称为机器代码(machine code),是计算机的CPU 或 GPU 可直接解读的资料。

    机器代码有时也被称为原生码(Native Code),这个名词比较强调某种编程语言或库与执行平台相关的部分。

    机器语言是用二进制代码表示的、计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。不同种类的计算机其机器语言是不兼容的,按某种计算机的机器指令编制的程序不能在另一种计算机上执行。

    要用机器语言编写程序,编程人员需首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员要自己处理每条指令和每一数据的存储分配和输入输出,还需记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作,编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,这样编写出的程序完全是0与1的指令代码,可读性差且容易出错。在现今,除了计算机生产厂家的专业人员外,绝大多数程序员已经不再学习机器语言。

    机器语言是微处理器理解和使用的用于控制它的操作的二进制代码。

    继续疑惑

    从上面那段话,我们能知道,机器码是一种指令集,使用二进制代码表示,重点是这句:“它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。
    那么,我可以这样理解吗?

    cpu=指令集的物理实现?
    指令集是接口,cpu就是实现?

    是不是可以理解为这样,cpu内的硬件设计,直接对应指令集的设计,比如指令集规定:0000代表读取操作,那么cpu的电路设计应该有一部分是当电路状态为0000的时候,进行读取。

    在这里插入图片描述

    新的疑惑:译码器?

    然后继续查资料,带给我新的疑惑,译码器又是个啥??
    在这里插入图片描述

    译码器是啥子

    维基百科是这么解释的:
    译码器是电子技术中的一种多输入多输出的组合逻辑电路,负责将二进制代码翻译为特定的对象(如逻辑电平等),功能与编码器相反。译码器一般分为通用译码器和数字显示译码器两大类。

    关注重点:“逻辑电平”

    那是不是能这么理解,机器码到了译码器,译码器来指挥cpu咋干。好像没啥毛病。

  • 相关阅读:
    子类对象构造与析构的过程
    Anaconda创建虚拟环境的常见命令
    webpack5基础--02_基本配置( 5 大核心概念)
    2022-11-21 mysql列存储引擎-架构实现缺陷梳理-P2
    textarea去除红色波浪线
    docker部署mysql8避坑版,看这一篇就够了
    Spring Bean 生命周期
    Linux sz 和 rz安装
    Paxos Made Simple
    基于深度学习的电动自行车头盔佩戴检测系统
  • 原文地址:https://blog.csdn.net/u013036688/article/details/127851304