cpu与指令集

简介: 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咋干。好像没啥毛病。


目录
相关文章
|
1月前
|
缓存 Linux Go
一次性构建出多CPU指令集的 Docker 镜像
本文介绍了使用 Docker Buildx 构建跨平台 Docker 镜像的流程。首先确保系统为 Ubuntu 22.04,安装 Docker 和相关依赖。然后配置 Docker Buildx,编写 Go 程序和 Dockerfile。接着,创建构建脚本 `build.sh` 自动化构建并推送镜像到 Docker Hub。运行此脚本将为不同平台(如 amd64, arm64)构建并推送镜像。最后,在 Docker Hub 可查看构建结果,并可在其他系统上测试镜像。
53 3
|
8月前
|
Docker Windows 容器
cpu不支持avx指令集怎么办
如果CPU不支持AVX指令集,可以考虑以下两种解决方案: 更新BIOS版本:在某些情况下,更新BIOS版本可能会支持AVX指令集。可以联系电脑厂商或者查阅相关教程进行BIOS更新。 更换支持AVX指令集的CPU:如果更新BIOS版本后仍不支持AVX指令集,那么可以考虑更换支持AVX指令集的CPU。可以根据自己的需求和预算选择适合的CPU。 另外,如果在tf1.6以后的官方的tf包都是用AVX编译的,而电脑的CPU不支持AVX指令集,那么可以考虑使用Docker来配置运行环境。但需要注意,Docker在Windows上配置稍显繁琐,并需要配置虚拟机等其他东西。 总的来说,如果不支持AVX指令
2041 0
|
Android开发
【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
1068 0
【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
|
24天前
|
芯片
芯片设计 | 一文读懂,CPU、精简指令集、复杂指令集该如何理解
芯片设计 | 一文读懂,CPU、精简指令集、复杂指令集该如何理解
23 0
|
1月前
|
存储 Java 程序员
cpu与指令集
cpu与指令集
46 0
|
1月前
|
XML Java API
Android App开发之创建JNI接口获取CPU指令集讲解及实战(附源码 简单易懂)
Android App开发之创建JNI接口获取CPU指令集讲解及实战(附源码 简单易懂)
68 0
|
1月前
|
存储 编译器 数据处理
CPU架构和指令集
不同的CPU架构通常使用不同的指令集。每种CPU架构都有其自己的一组特定的机器指令,这些指令用于执行计算机程序。不同的CPU架构之间的指令集是不兼容的,这意味着编写的程序通常需要根据目标CPU的架构进行编译或汇编,以确保它们能够在该CPU上正确运行。 一些常见的CPU架构包括:
不同CPU指令的指令集密度
不同CPU指令的指令集密度
111 0
不同CPU指令的指令集密度
|
存储 缓存 安全
平头哥 CPU 编程模型、指令集|学习笔记
快速学习平头哥 CPU 编程模型、指令集
1196 0
平头哥 CPU 编程模型、指令集|学习笔记
|
人工智能 架构师 测试技术
ARM 推出全新 CPU 和 GPU:首次基于 Armv9 指令集,性能显著提升
ARM 推出全新 CPU 和 GPU:首次基于 Armv9 指令集,性能显著提升
387 0
ARM 推出全新 CPU 和 GPU:首次基于 Armv9 指令集,性能显著提升