计算机中有哪几种常见数据类型

数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。下面是YJBYS小编带来的计算机中有哪几种常见数据类型介绍,希望对你有帮助。

一、指令系统概述

指令是实现计算机“程序控制”功能的载体,也是“存储程序”操作的对象之一,可见指令在冯诺依曼体系结构计算机中的重要地位!本章立足于计算机系统层次结构中的“机器语言级”,机器语言指令是计算机硬件与软件的界面,也是用户操作和使用计算机硬件的接口。计算机所包含的所有指令的集合成为该机的指令系统。

从系统观的角度看,指令系统是计算机系统性能的集中体现,是计算机软/硬件系统的设计基础,一方面,硬件设计者要根据指令系统进行硬件的逻辑设计;另一方面,软件设计者也要根据指令系统来建立计算机的系统软件。如何表示指令,怎样组成一台计算机的指令系统,直接影响计算机系统的硬件和软件功能。

二、指令格式

指令是计算机中传输控制信息的载体,每条指令代表某个基本的信息处理操作及操作的对象,因此,指令中应该包含表示处理功能的操作码字段和与操作对象有关的地址码字段。指令的一般格式如图5.1所示。

图1 指令的一般格式

1.操作码OP

操作码来表示“程序控制”的具体操作,因此,不同功能的指令其操作码编码必须不同,因此,操作码的长度(即操作码字段所包含的`二进制位数)就与机器支持的指令数量有关。通常情况下,长度为n位的操作码,最多可表示1条指令。

2.地址码

地址码字段的作用宏观上看是提供操作码的操作对象,微观上随指令类型和寻址方式的不同而不同,它可能作为一个操作数、也可能是操作数的地址(包括操作数所在的主存地址、寄存器编号或外部设备端口地址)、也可能是一个用于计算地址的偏移量。不论地址码具体上起什么作用,但其长度会影响对象的范围(数据大小、地址范围大小、偏移量的大小)

根据一条指令中所含操作数地址的数量,可将指令分三地址指令,双地址指令,单地址指令和零地址指令等4种。不同数量地址码格式时,指令表示的操作也略有区别。

1)三地址指令

指令中具有三个地址码字段,其格式为:

三、地址指令的操作表达式为:

将地址Ad1所指数据与Ad2所指数据执行OP所指定的操作,结果送Ad3所指地址存放。

2)二地址指令

为压缩指令的长度,在三地址指令的基础上,不另指定地址存放结果,而是存放到第一操作数地址Ad1中,把原来存放的第一操作数覆盖,从而减少一个地址,形成双地址指令。格式如为:

双地址指令的操作表达式为:

将地址Ad1所指数据与Ad2所指数据执行OP所指定的操作,结果送Ad1所指地址存放。

目前,常见的双地址指令主要有RR型(两个地址均为寄存器地址)和RS型(一个地址是存储地址,另一个是寄存器地址)。

3)一地址指令

单地址指令中只有一个地址码字段,其格式为:

两种情况下使用单地址指令:

(1)单目运算类指令,如逻辑运算中的求反操作,其运算对象只有一个,故只需一个地址码,它既表示该操作数的源地址,又作为操作结果的目的地址。此时,单地址指令的操作表达式为:

(2)为进一步缩短指令长度,将双目运算类指令中的一个操作数和操作结果均约定隐含于CPU中的某个寄存器(通常是累加器A)中,此时,单地址指令的操作表达式为:

4)零地址指令

零地址指令中往往只有操作码而没有显式地给出地址码字段,其格式为:

零地址指令分三种情况:

(1)指令本身不需要任何操作数,如只是为了占位和延时而设置的空操作指令NOP(空操作指令)、WAIT(等待指令)、HALT(停机指令)等;

(2)指令需要一个操作数,但该操作数隐含于CPU的某个寄存器(通常是累加器A)中;

(3)操作数均由堆栈提供的指令,其操作结果也存入堆栈。

特别说明:指令格式的不同会影响到控制器局部通路和控制结构的不同,在学习控制器设计时,要牢牢把握指令格式与控制器结构的这种紧偶合!体会硬件与软件之间的互动关系!

三、指令长度对指令格式的影响

一条指令中所包含的二进位数即为指令长度。指令越长,能够分配给操作码和地址码字段的位数就越多。在指令长度固定的情况下,所分配的地址字段越多,则每个字段的位数就越少,将影响到地址字段的寻址范围(包括所表示数据、地址范围或偏移量的大小)。

四、指令系统的发展

早期的指令系统以复杂指令为主,对应的计算机称为复杂指令集计算机(Complex Instruction Set Computer: CISC),现代计算机的指令系统以精减指令为主,对应的计算机称为精简指令集计算机(Reduced Instruction Set Computer: RISC),两者具有非常明显不同的特征:

1.复杂指令系统的特征

(1)指令系统复杂庞大,指令数目一般多达二三百条;

(2)寻址方式多;

(3)指令格式多;

(4)指令字长不固定;

(5)访存指令不加限制;

(6)各种指令使用频率相差大;

(7)各种指令执行时间相差大;

(8)大多数采用微程序控制器。

2.精简指令系统的特征

人们进一步分析CISC后发现了80-20规律,即80%程序只用到了20%的指令集,基于这一发现,RISC精简指令集被提出来,这是计算机系统结构的一次深刻革命。

RISC体系结构的基本思路是:针对CISC指令系统指令种类太多、指令格式不规范、寻址方式太多的缺点,通过减少指令种类、规范指令格式和简化寻址方式,方便处理器内部的并行处理,从而大幅度地提高处理器的性能。大部分RISC具有下述一些特点:

(1)优先选取使用频率最高的一些简单指令;

(2)大多数指令在一个机器周期内完成;

(3)采用LOAD/STORE结构。由于访问主存时间长,只保留LOAD(取数)和STORE(存数)两种访存指令,其余指令只对存放在寄存器中的操作数进行处理;

(4)采用简单的指令格式和寻址方式,指令长度固定;

(5)固定的指令格式。指令长度、格式固定,可简化指令的译码逻辑,有利于提高流水线的执行效率;

(6)面向寄存器的结构。为减少访问主存储器,CPU内应设大量的通用寄存器;

(7)采用硬布线控制逻辑;

(8)注重编译的优化,力求有效地支撑高级语言程序。

精简指令系统计算机的着眼点不是简单地放在简化指令系统上,而是通过简化指令使计算机的结构更加简单合理,从而提高处理速度,其主要途径是减少指令的执行周期数。 现在,RISC的硬件结构有很大改进,一个机器周期平均可完成1条以上指令,甚至可达到几条指令。

【计算机中有哪几种常见数据类型】相关文章:

c语言中最常用的四种数据类型,计算机中有哪几种常见数据类型相关推荐

  1. Java语言中的常用包、访问控制

    Java常用的语言包 Java的核心类都放在Java包以及其子包下,Java扩展的许多类都放在Javax包以及其子包下.这些实用类也就是前面所说的API(应用程序接口),Oracle按这些类的功能分别 ...

  2. c语言中一些常用的逻辑运算,C语言中的位运算和逻辑运算

    这篇文章来自:http://blog.csdn.net/qp120291570/article/details/8708286 位运算 C语言中的位运算包括与(&),或(|),亦或(^),非( ...

  3. C语言中的常用库宏--持续更新

    c语言中的宏/持续更新 limits.h 名字 值 说明 CHAR_BIT 8 定义了一个字节中的比特数 SCHAR_MIN -127 定义最小值签署的字符 SCHAR_MAX 127 定义最大值签署 ...

  4. 计算机在化学化工中的应用第四版答案,计算机在化学化工中的应用

    计算机在化学化工中的应用 出版时间:2005年03月 定 价:22.10 I S B N :9787040164251 所属分类: 计算机•网络 &nbsp计算机•网络  >  行业软件 ...

  5. C语言不同数据类型间的混合运算转换规则+常见数据类型

    在程序中经常会遇到不同类型的数据进行运算,若一个运算符两侧的数据类型不同,则先自动进行类型转换,使两者具有同一类型,然后进行运算,现将规律总结如下: 1. +. -. *. /运算的两个数中有一个数为 ...

  6. C语言中最常用标准库

    标准头文件包括: <asset.h>      <ctype.h>       <errno.h>       <float.h>   <limi ...

  7. 关于C语言中一些常用函数的说明

    1.I/O函数 (1)scanf函数: int scanf(const char *format-..); 从标准输入流stdin中按格式format将数据写到参数表中;若操作成功,返回写到参数表中的 ...

  8. C语言中最常用标准库函数

    标准头文件包括: <asset.h>      <ctype.h>       <errno.h>       <float.h> <limits ...

  9. C语言中字符串常用函数--strcat,strcpy

    strcpy 原型声明:extern char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 功能:把从src ...

最新文章

  1. 德勤:2025年汽车行业价值链的四个合理情境
  2. FFmpeg-20160422-snapshot-bin
  3. Spring学习(8)--- @Autowired注解(一)
  4. Chrome开发者工具network标签页里的transferred over network和resources loaded by the page的区别
  5. 51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
  6. CTU 2017 J - Punching Power (二分图匹配)
  7. SpringCloud 入门教程(五): Ribbon实现客户端的负载均衡
  8. Matlab 移动通信原理-扩频通信系统仿真实验(扩频通信系统的多用户数据传输、利用蒙特卡罗仿真方法对扩频增益进行性能仿真)
  9. 利用讯飞语音听写接口实现实时语音转写。
  10. HTB打靶日记:Soccer
  11. 如何解决MathPage.wll文件找不到问题
  12. vue 实现 tooltips的效果
  13. 微信公众平台开发——群发信息
  14. ShapeAlias
  15. spring cache ttl 过期
  16. 六大类专业搜索工具(转)
  17. i html设置为不倾斜,css如何不让字体倾斜?
  18. 小游戏策划案例精选_趣味小游戏活动方案_趣味游戏活动策划书
  19. JAVA 设计模式(全)
  20. 感觉世界变化太快...

热门文章

  1. 用 Python 实现植物大战僵尸代码!
  2. 做好以下四点,拒做 “ 空心 ” 程序员 | CSDN 博文精选
  3. Python 2 寿命即将终结,​是时候将 3500 万行代码迁移到 Python 3 了!
  4. 程序员如何解决并发冲突的难题?
  5. @程序员,一文掌握 Web 应用中的图片优化技巧!
  6. 微信们正在成为“被模仿者”!中国互联网现状及趋势报告
  7. PingCAP 完成 C 轮 5000 万美元融资,创新型分布式关系型数据库领域最大笔融资
  8. 苹果抛弃 OpenGL!
  9. 区块链的爆发仍为时尚早......
  10. 6岁会编程,14岁就被麻省理工录取,神童谎言是如何诞生的?