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

本文主要是介绍边用边充电影响寿命吗?看看计算机指令组成与操作类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

长度可以固定:比如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.chinasem.cn/article/1003080

相关文章

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

java Stream操作转换方法

《javaStream操作转换方法》文章总结了Java8中流(Stream)API的多种常用方法,包括创建流、过滤、遍历、分组、排序、去重、查找、匹配、转换、归约、打印日志、最大最小值、统计、连接、... 目录流创建1、list 转 map2、filter()过滤3、foreach遍历4、groupingB

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.