边用边充电影响寿命吗?看看计算机指令组成与操作类型

news2024/10/5 12:48:24

计算机指令集体系结构之指令

指令由操作码和地址码字段组成。

操作码指明了指令要完成的操作。

长度可以固定:比如RISC(reduced instruction set computer)精简指令集计算机

与之对应的RISC(复杂指令集计算机),其操作码长度不固定。

一般采用拓展操作码技术。

8ffbb1d3f3e6435781beb201a7a9c331.png

图中指令字长共16位,操作码依次按4位,8位,12位,16位划分。

4位操作码(三地址)共有2^4=16种指令,其中使用了15条,剩下的2^4-14=1条用于8位拓展操作码,8位操作码(二地址)也使用了15条,留下一条区分12位操作码(一地址),直到16位操作码(零地址),此时使用全部的16条,因为本例最大只能操作码拓展全部到16位;。

53acec7371dc42afa4c9df79f76678be.jpg

 

即结论是拓展操作码中,指令操作码每减少a种,多构成a*2^(一地址的地址码位数)种拓展的下一位操作码。

例子:

1. 假设指令字长为16位,操作数的地址码为6位,指令有零地址,一地址,二地址三种格式。

(1)设操作码固定,而零地址指令由有P种,一地址指令有Q种,则二地址指令最多有多少种?

二地址指令操作码位数:

操作码固定:位数为16-6-6=4;

4位操作码有2^4=16种操作。

二地址指令有16-P-Q种。

(2)采用拓展操作码技术,若二地址指令由X种,零地址指令有Y种,则一地址指令最多有几种?

cb8bbef1787244678df1c340e2a29473.jpg

 

地址码拓展操作码长度可变,零地址,一地址,二地址操作码位数分别是16位,10位,4,位。

由上述图中的逻辑可知,操作码每减少一种,就可以多2^6种拓展的下个操作码。即二地址操作码每减少一种,多构成2^6种一地址操作码;

一地址操作码每减少一种,多构成2^6种零地址操作码。

二地址指令有X种,一地址指令最多有(2^4-X)*2^6种,(4位使用后剩下的用来区分下一地址操作码);

设一地址指令由M种,零地址指令有((2^4-X)*2^6-M))*2^6=Y种,解出M为(2^4-x)*2^6-Y*2^(-6);

指令操作数可直接寻址范围为2的幂次方,幂次方与地址码位数相同。

操作类型

1. 数据传送:对存储器store写,load读。

2。算术逻辑操作

3.移位:

算术移位:有符号数的移位。

逻辑移位:无符号数的移位。

循环移位:

4.转移:

0da477fc06df4b77a7f2a8c72654b76b.jpg

 

(1)无条件转移:

JMP X:无条件跳转到X

(2)条件转移:

一些条件码:Z(零标志位),N(负标志位),V(溢出标志位),C(进位标志位),P(奇偶标志位):为偶数时候,P为1;

比如:BRO X(结果溢出,跳转到X)

BRC Y( 结果进位,跳转到Y)

(3)调用与返回

调用

CALL:

转到子程序入口。

RETURN:返回调用程序断点处,

92baa5fc384843ec9c34f9f27689bad4.png

(4)TRAP陷阱与陷阱指令

计算机运行2时候,可能出现意外情况,比如电源断开,除数为0,运算结果溢出等,此时计算机发出陷阱信号,暂停当前程序的执行,转入故障处理程序进行相应的处理。

5.

输入输出

6.其他;

等待,停机等指令。

指令格式

397fab8c74cf4e74ba06bc7897a124f2.jpg

 

(1)RISC计算机,比如ARM,MIPS,指令长度受到了严格的限制,指令长度必须规整为一个字。

(2)CISC计算机,比如68K,采用允许指令长度拓展解决了固定指令长度问题

设计者

操作码与指令

三地址计算机

operation destination,source1,source2

source1和source2都是源地址,destination是目标地址,即用来存放结果。

双地址计算机

计算

比如a=a+b;

一个地址出现了两次,第一次作为源地址,第二次作为目的地址。

一个地址(即操作数)因为覆写而被破坏。

大多数计算机不能直接访问两个存储单元,而是两个寄存器,或者一个寄存器加一个存储单元。

d73638d6ca614c6f97ada76501a6bb26.jpg

 

68K处理器的ADD指令

ADD D0,D1 [ D1]+[D0] ←[D1]

ADD P,D1 [P]+[D1] ← [D1]

ADD D7,P [D7]+[P] ← [P]

单地址计算机

只在指令中有一个操作数,第二个操作数是叫做累加器的寄存器

比如c=a+b

LDA a;将P加载到累加器中。

ADD b;将Q与累加器的内容相加。

STA c; 将累加器的内容加载到c;

零地址计算机

根本没有地址指令

7750825bf417491883306b928500b1a7.jpg

 

叫做栈计算机,对位于栈顶的数据进行处理

从栈顶取出元素,进行计算,结果入栈。

取元素叫出栈,放元素叫入栈。需要load指令和store指令从存储器读取数据或保存数据到存储器。

计算a+b

PUSH a;a入栈

PUSH b;b入栈。

ADD 栈顶两个元素出栈,然后相加入栈。

POPZ :栈顶数据出栈(结果)

运算的操作命令将栈顶元素出栈(可能不止一个)在运算完成后将其入栈;

一个半地址计算机

10d2c4c447304501a0dd1280701ed07c.jpg

 

INTEL IA32系列和FREESCALE系列

计算(a+b)*c

MOVE a,D0;将a从存储器放入寄存器D0

ADD b,D0;将b从存储器放入寄存器D0

MOVE c,D1;将c从存储器放入寄存器D1

MULU D0,D1;将寄存器D0乘以寄存器D1

接下来讨论ARM的指令,

ARM是一个32的位的计算机,采用寄存器存储器结构,采用store/load指令在存储器和寄存器之间移动数据。

32位为一个字,16位为一个半字,16位为一个字

ARM有的16个寄存器,r0-r13为通用计算机,r14为链接寄存器,用于存放子程序返回地址。r15为程序计数器,r13为栈指针,但只要当需要使用时才会变为栈指针,

ARM指令

453c480b41bd4f559194b987b5eda482.jpg

 

加法 ADD r0,r1,r2 [r0] ← [r1] +[r2]

减法 SUB r0,r1,r2 [r0] ←[r1]- [r2]

与 AND r0,r1,r2 [r0] ←[r1]·[r2]

或 ORR r0,r1,r2 [r0] ←[r1] ⊕[r2]

乘 MUL r0,r1,r2 [r0] ←[r1]*[r2]

寄存器-寄存器移动 mov r0,r1 [r0] ←[r1]

比较 cmp r1,r2 [r1] ←[r2]

相等跳转 beq label [pc]-label(跳转到label处)

ARM在算术或逻辑运算后不会自动更新状态标志,

更新ARM条件码,只有需要在指令助记符后面加后缀S,实现自动更新

SUBS r1,r1,#1;

在r1-1后,将结果放入r1并更新状态标志

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1694321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++进阶】AVL树

0.前言 前面我们已经学习过二叉搜索树了,但如果我们是用二叉搜索树来封装map和set等关联式容器是有缺陷的,很可能会退化为单分支的情况,那样效率就极低了,那么有没有方法来弥补二叉搜索树的缺陷呢? 那么AVL树就出现了&…

【C++】类与对象——多态详解

目录 一、多态的定义 二、重载、覆盖(重写)、隐藏(重定义)的对比 三、析构函数重写 四、C11 override 和 final 1. final 2. override 五、抽象类 六、多态的原理 一、多态的定义 多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为…

【机器学习】机器学习与大型预训练模型的前沿探索:跨模态理解与生成的新纪元

🔒文章目录: 💥1.引言 ☔2.跨模态理解与生成技术概述 🚲3.大型预训练模型在跨模态理解与生成中的应用 🛴4.前沿探索与挑战并存 👊5.未来趋势与展望 💥1.引言 近年来,机器学习领…

使用C/C++ API接口操作 Zookeeper 数据

ZooKeeper 支持 Java 和 C 的API接口。本文将介绍使用 C/C 语言客户端库的编译安装和使用入门。 一、编译安装 PS:就在上一篇文章还觉得安装和配置 jdk 、maven 麻烦,所以当时选择 apache-zookeeper-[version]-bin.tar.gz 的版本。然而,本文…

【C++要哮着学】类和对象

文章目录 前言面向过程和面相对象初步认识类的定义类的访问限定符及封装访问限定符封装 类的作用域类的实例化类对象模型如何计算类的大小结构体内存对齐规则类对象的存储方式1.对象中包含类的各个成员2.代码只保存一份,在对象中保存存放代码的地址3.只保存成员变量…

权限维持--linux

隐藏文件/夹&-开头文件 如何创建: 在文件名之前加.即可 touch .1.s 如何清除、查找: ls -al rm -fr -文件 已-开头的文件直接读取是不行的需要带目录 隐藏时间戳 ①用其他文件的时间 touch -r zww.php testq.txt 如何清除、查看: stat test…

KDE-Ambari-Metrics-Collector问题排查解决手册

文档说明 本文档是为了解决KDE平台的Ambari-Metrics-Collector服务在运行时遇到的问题而提供的问题排查和解决方法的参考文档 说明: 当前的Ambari-Metrics-Collector服务包括了ams-collector和ams-hbase两个程序,在Ambari-Metrics-Collector安装的节点执行ps -elf|grep am…

【算法】前缀和——二维前缀和模板题

本节博客是通过——二位前缀和模板题来介绍前缀和二维算法,有需要借鉴即可。 目录 1.题目2.暴力求解3.二维前缀和算法3.代码示例4.总结 1.题目 题目链接:LINK 2.暴力求解 这里我们首先想到的就是一个暴力求解的方式,挨个需要的进行遍历就…

基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法,对比两个算法的仿真时间,收敛曲线,以及路径规划的结果&#xff0…

独享IP是原生IP吗?

原生IP: 原生IP是指由Internet服务提供商(ISP)直接分配给用户的IP地址,这些IP地址通常反映了用户的实际地理位置和网络连接。原生IP是用户在其所在地区或国家使用的真实IP地址,与用户的物理位置直接相关。在跨境电商中…

从零训练yolov8

1.收集数据 2.数据标注 pip install labelimg3.划分数据集 0.2的验证机0.8的训练集 import os from shutil import copyfile from sys import exit import randomsource r"D:\Data\imgs\screenc" \\ target_train r"D:\Data\imgs\datasets\mydata\images\t…

访存优化实践之一 : CPU、GPU、DDR与访存路径介绍

一、CPU的访存路径 上图是目前主流的CPU架构介绍。可以看到,CPU的访存路径:先经过MMU,然后经过Cache,最后到达DRAM。这其中涉及到的关键内容为基于MMU的内存管理以及缓存机制。 1.1、基于MMU的内存管理 众所周知,在计算机设计之处是没有虚拟地址的概念的,CPU发出的地址即…

win中的vscode利用ssh插件,在同一台电脑的virtualbox虚拟出来的ubuntu中编译,调试设置方法

vscode中安装ssh插件virtualbox7.0中的设置: 在网络管理器中添加host-only网卡,用来主机和虚拟机双向通信。这个网卡能在win的设备管理器里面看到手动配置网卡,其中ip地址是另一个网段的,主机ip地址是192.168.1.1。这个网卡对于虚…

ELK 日志监控平台(二)- 优化日志格式

文章目录 ELK 日志监控平台(二)- 优化日志格式1.日志输出要点2.优化应用的日志格式2.1.确定日志输出要点来源2.1.1.服务名称2.1.2.服务环境2.1.3.日志级别2.1.4.日志输出时间2.1.5.日志内容2.1.6.日志输出对象2.1.7.线程名称 2.2.logback.xml修改日志输出…

Java网络编程之TCP协议核心机制(二)

目录 题外话 正题 滑动窗口机制 如果出现丢包问题怎么办?? 滑动窗口触发条件 流量控制 拥塞控制 小结 题外话 宿舍没有空调的感觉谁懂?!!! 人要蒸发了,八点自动热醒,直接强行学习 正题 我们继续讲解TCP协议核心机制 上篇博客讲完了,建立连接机制,确认应答机制,超时…

Boxy SVG for Mac:打造精致矢量图形的得力助手

在矢量图形设计领域,Boxy SVG for Mac以其出色的性能和丰富的功能,成为了设计师们的得力助手。 Boxy SVG for Mac(矢量图编辑器) v4.32.0免激活版下载 Boxy SVG具备强大的编辑能力,支持节点编辑、路径绘制、颜色填充等多种操作,让…

struct.unpack_from()学习笔记

struct.unpack_from(fmt,b_data,offset) 按照指定的格式fmt,从偏移位置offset,对b_data开始解包,返回数据格式是一个元组(v1,v2…) fmt可以有: _struct.py: The remaining chars indicate types of args and must match exactly;…

实现 YOLO 目标计数 | 含代码示例

点击下方卡片,关注“小白玩转Python”公众号 在YOLO算法的无数应用中,我们想聚焦于一个真实的场景:道路车辆计数。这个用例对于智能城市的交通规划和决策具有重要意义。在这篇文章中,我们将带您一步步实现YOLO目标检测和计数&…

工业路由器在新能源数字化中的应用:重塑能源行业的未来

随着全球对可再生能源和能源效率的追求日益加强,新能源数字化已成为推动行业发展的关键因素。在这一变革的浪潮中,工业路由器以其卓越的性能和独特的功能,成为新能源数字化不可或缺的核心组件。本文将深入探讨工业路由器在新能源数字化中的应…

对话:用言语构建深刻的思想碰撞

对话:用言语构建深刻的思想碰撞 在写书中,对话是一种有力的工具,能与读者进行有效的沟通和交流,引发深思和反思。它不仅是信息传递的方式,更是加深情感、探讨主题和吸引读者参与的桥梁。你应从读者的角度思考&#xf…