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

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

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

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

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

长度可以固定:比如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

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

Mysql BLOB类型介绍

BLOB类型的字段用于存储二进制数据 在MySQL中,BLOB类型,包括:TinyBlob、Blob、MediumBlob、LongBlob,这几个类型之间的唯一区别是在存储的大小不同。 TinyBlob 最大 255 Blob 最大 65K MediumBlob 最大 16M LongBlob 最大 4G