通俗解释什么是指令集

简介: 通过简单案例来通俗的解释指令集的作用

计算机语言经过不断发展分为三个层次,高级语言、汇编语言和机器语言。

1、机器语言

我们人类在计算数字的时候习惯于用10进制的表示方法,据说是因为人类有10根手指的关系。但是对计算机来说靠的是高低电平来表示所有的信息,在这个前提下要以10进制的方式表示信息就比较复杂,最适合计算机的表示方式就是高电平代表1,低电平代表0,所有的信息都是以0和1的组合方式来表示,不管是简单的加法还是微信还是游戏,本质上就是0和1组成的指令进行计算的结果。因此以0和1组成的指令是计算机最底层的语言,事实上计算机也仅能理解这种沟通方式,这种语言叫机器语言。

2、汇编语言

机器语言的问题在于人类要传递给计算机任何信息都必须以0和1的组合序列表达,不符合人类的沟通习惯,因此有了助记符的概念并在这个基础上产生了汇编语言,通俗来说我们需要将1+2这种信息表达为计算机可接受的0和1的组合,因为人类更能接受1+2这种表达方式,而计算机只能接受0和1的表达方式,汇编语言就是初步解决了人类和计算机的沟通难度,提高了沟通效率。

3、指令集的作用

以下以实际ARMv8指令集举一个最简单的加法例子来说明指令集的作用。
高级语言语句:1+2
汇编语言语句:ADD X9(存放1+2的结果),X10(存放1),X11(存放2)
在编译成机器语言时,需要解决几个问题:
(1) 怎么让计算机明白ADD是什么意思
(2) 怎么让计算机以0和1的组合序列表达1+2这个计算指令
先解决第一个问题,芯片厂商定义一串序列表示加法,根据ARMv8指令集,1112(十进制)代表加法,进一步表示为二进制为10001011000(二进制)。
解决第二个问题分为两个步骤,通俗来说就是单词和语法,单词的翻译结果为ADD=1112(十进制)=10001011000(二进制);X9寄存器=9(十进制)=1001(二进制);X10寄存器=10(十进制)=1010(二进制);X11寄存器=11(十进制)=1011(二进制)。之后是语法也就是按照什么顺序让计算机读懂以及每个二进制字段所占的位数。ARMv8指令集对于加法的指令格式如下:
image.png

这里忽略位移量这个参数,按照指令格式将1+2填入此表:

高级语言:1+2

image.png

汇编语言:ADD X9(存放结果),X10(存放1),X11(存放2)

image.png

机器语言:

image.png
最终根据ARMv8指令集,1+2的机器语言指令为10001011000010110000000101001001。

由于机器语言是最底层并且计算机唯一能读懂的语言,指令集的改变就涉及所有的上层程序的重写,重中之重就是操作系统。无法要求同一个操作系统适应不同的指令集,所以相对技术,芯片的市场占有率是指令集能否成为公认标准的唯一指标。

目录
相关文章
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络(CNN)的工作原理深度解析
【6月更文挑战第14天】本文深度解析卷积神经网络(CNN)的工作原理。CNN由输入层、卷积层、激活函数、池化层、全连接层和输出层构成。卷积层通过滤波器提取特征,激活函数增加非线性,池化层降低维度。全连接层整合特征,输出层根据任务产生预测。CNN通过特征提取、整合、反向传播和优化进行学习。尽管存在计算量大、参数多等问题,但随着技术发展,CNN在计算机视觉领域的潜力将持续增长。
【光波电子学】MATLAB绘制光纤中线性偏振模式LP之单模光纤的电场分布(光斑)
该文章介绍了如何使用MATLAB绘制单模光纤中线性偏振模式LP₀₁的电场分布,并提供了相关的数学公式和参数用于模拟光纤中的光斑分布。
241 0
|
10月前
|
监控 负载均衡 Kubernetes
深入探索微服务架构中的服务治理
深入探索微服务架构中的服务治理
330 0
|
算法 异构计算
推测解码:在不降低准确性的情况下将LLM推理速度提高2 - 3倍
在本篇文章我们将详细讨论推测解码,这是一种可以将LLM推理速度提高约2 - 3倍而不降低任何准确性的方法。我们还将会介绍推测解码代码实现,并看看它与原始transformer 实现相比到底能快多少。
525 10
|
前端开发 Java
【Java项目】SpringBoot项目的多文件兼多线程上传下载
【Java项目】SpringBoot项目的多文件兼多线程上传下载
664 0
|
存储 开发框架 前端开发
深入探索React:构建动态、交互式前端应用的终极指南
深入探索React:构建动态、交互式前端应用的终极指南
373 0
|
人工智能 自然语言处理 算法
ChatGPT模型中的惩罚机制
ChatGPT中,除了采样,还有惩罚机制也能控制文本生成的多样性和创意性。本文将详细为大家讲解ChatGPT种的两种惩罚机制,以及对应的`frequency_penalty `和`presence_penalty `参数。
1470 0
|
并行计算 PyTorch 算法框架/工具
Pytorch安装和检验cuda和cudnn是否可用
Pytorch安装和检验cuda和cudnn是否可用
2928 0
Pytorch安装和检验cuda和cudnn是否可用
|
JavaScript Android开发
uniapp 项目双屏异显插件使用方式
uniapp 项目双屏异显插件使用方式
1038 0
uniapp 项目双屏异显插件使用方式
|
前端开发
写给小白的Figma插件开发教程(1)
写给小白的Figma插件开发教程(1)
1772 0