指令用来确定“做什么”和“怎样做”,数据是“做”的时候需要原始数。

计算机可以从时间和空间两方面来区分指令和数据,在时间上,取指周期从内存中取出的是指令,而执行周期从内存取出或往内存中写入的是数据,在空间上,从内存中取出指令送控制器,而执行周期从内存从取的数据送运算器、往内存写入的数据也是来自于运算器。

比如:要计算机做1+2=?中,“+”表示要做什么和怎样做,1和2则是做的时候需要的原始数。现在假设某CPU中,“+”用二进制“00000001”来表示,“1、2”分别用“00000001、00000010”来表示。那么,这段程序存入内存中就是这样的:
XXXX1:00000001
XXXX2:00000001
XXXX3:00000010 前面的XXXX1 XXXX2
XXXX3表示内存的地址
  从上面可以看出,“+”指令和被加数是完全相同的,当然,这是我故意这样假设的,但是,在实际情况中,这种情况是大量存在的。在正常情况下,CPU只能把XXXX1内存中的00000001作为指令,XXXX2内存中的00000001作为被加数才能得到正确的结果。那么CPU如何才能做到不把第二个00000001也当成“+”呢?
  1.人们把内存的某个地址规定为起始地址(又称为复位地址),也就是说,当计算机开机或者被强行复位(也就是机箱上那个重启动按钮按下的的时候),CPU立即跳转到这个地址中,并且把它里面的代码作为指令来执行,同时根据这个指令的长度和格式判断下一条指令在什么地方。
  对于X86系列CPU(也就是现在人们常用的什么奔XX、赛XX系列),它的复位地址是FFFF0,如果表示成逻辑地址则是:FFFF:0000。对DEBUG比较熟悉的朋友或者会在一些高级语言中嵌入汇编语言的朋友可以这样做一个试验:
  用DEBUG执行一条指令(这是一条无条件跳转指令):jmp
FFFF:0000,或者在高级语言中嵌入这条汇编指令,执行后,你就会发现,计算机重新启动了。其实,用程序控制计算机重启的最本质的操作就是这样的。
  2.给各种指令规定了相应的长度和格式。比如:某数+某数这条指令就规定:这条指令的长度是3个字节,其中第一个字节表示“+”,后面两个字节表示被加数和加数。于是,当CPU到达这个指令后,就自动把第一个代码作为指令,后面两个代码作为数据,依次类推,第4个代码就必然是指令.....

指令和数据都用二进制代码存放在内存中,从时空观角度回答CPU如何区分读出的代码是指令还是数据相关推荐

  1. 有一页式系统,其页表存放在内存中. (1)如果对内存的一次存取需要1.5微秒,问实现一次页面访问的存取时间是多少? (2)如果系统增加有快表,平均命中率为85%,.....

    题目: 有一页式系统,其页表存放在内存中. (1)如果对内存的一次存取需要1.5微秒,问实现一次页面访问的存取时间是多少? (2)如果系统增加有快表,平均命中率为85%,当页表项在快表中时,其查找时间 ...

  2. oracle中修改多个字段默认值_利用VBA代码在已有的数据表中删除、添加、修改字段...

    大家好,今日继续给大家讲解VBA数据库解决方案的第21讲,如何利用VBA代码在已有的数据表中删除,添加,修改字段.这个内容是操作数据库的一项必修的内容,还望大家在实际工作中多利用,所以这节的知识,对于 ...

  3. 我们仍未知道那天所见的数据是怎么存放在内存中的

    文章目录 前言 一.数据在内存中的存储 1.基础 (1)推导中使用的调试操作 (2)大小端的概念 (3)整形在内存中的存储 2.浮点型在内存中的存储 二.基本数据类型 1.指针中的简单应用 2.整型提 ...

  4. Java数组在内存中是如何存放的

    阅读目录 一维数组 二维数组 数组对象及其引用存放在内存中的哪里? Java中有两种类型的数组: 基本数据类型数组: 对象数组: 当一个对象使用关键字"new"创建时,会在堆上分配 ...

  5. c语言中全局变量内存,C语言——全局变量和局部变量在内存中的区别——及编译后的内存分区【栈-堆-全局存储区-文字常量区-程序代码区】...

    目录: 一:全局变量 二:局部变量 三:C语言经过编译之后将内存分为以下几个区域 (1)栈(stack) (2)堆(heap) (3)全局(静态)存储区 (4)文字常量区 (5)程序代码区 四:区别 ...

  6. Linux内存中的 buffer 和 cache 到底是个什么东东?

    Linux 中的 free 命令,会输出: total 总量 used  已使用 free 空闲 shared 共享内存 buffers cached 前面四项都比较好理解,一看我也就知道啥意思了.但 ...

  7. Linux内存中的 buffer 和 cache

    Linux内存中的 buffer 和 cache 到底是个什么东东? Linux 中的 free 命令,会输出: total 总量 used  已使用 free 空闲 shared 共享内存 buff ...

  8. HTML在计算机中指什么,计算机正在执行的指令存放在什么中

    计算机正在执行的指令存放在内存中. 在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中.这里存储器,就是内存. 其作用是用于暂时存放C ...

  9. int、unsigned int、float、double 和 char 在内存中存储方式

    2017-12-28 创建人:Ruo_Xiao 实验环境:vs2010.Intel 邮箱:xclsoftware@163.com 2018-01-16 修改人:Ruo_Xiao添加对移位存储的说明. ...

最新文章

  1. Elasticsearch性能优化实战指南
  2. Cpp 对象模型探索 / 虚函数表和虚函数表指针的创建时机
  3. 这些东西,你知道吗?是否忘记了
  4. favicon.ico--网站标题小图片二三事
  5. K3/Cloud点按钮打开单据,列表,动态表单,简单账表和直接Sql报表示例
  6. [转]关于Python里的类型注解
  7. JDBC连接数据库经验技巧集萃
  8. Q-Fish 升级技嘉主板BIOS
  9. vue -使用阿里矢量图
  10. 我对《简约至上》的理解
  11. linux Centos的ftp搭建-配置-上传下载文件--全面版
  12. XILINX封装FBG与FFG区别
  13. canvas画奥运五环 2019/10/29
  14. 华为云CDN加速服务:让你体验不一样的云提速
  15. PCB塞孔和不塞孔到底有什么区别,设计时如何选择塞孔还是不塞孔?
  16. 超级牛逼的立体画,太厉害了!
  17. 如何避免编程从入门到放弃?
  18. [脑科学]-这才是心理学
  19. 记录一个C++多线程的坑
  20. 华南理工计算机考研真题资料和问题回答。

热门文章

  1. webplugin 没有画面_[问题记录] webpack devServer HtmlWebpackPlugin 没有加载 js、css
  2. php引用下级目录文件夹,使用PHP遍历文件夹与子目录的函数代码
  3. 如意报表插件如何安装_Google Chrome浏览器如何安装插件应用
  4. java spring 服务器关闭连接_java springboot websocket 服务 服务器主动关闭连接 导致 抛出java.io.EOFException异常...
  5. 「权威发布」2019年电赛最全各类题目细节问题解答汇总
  6. PCB板上的“特殊焊盘”到底起什么作用?
  7. pytorch 转换onnx_新版PyTorch发布!新增TorchScript API,扩展ONNX导出
  8. 博途pcpg接口无法选择_博途TIA功能,如何创建一个S7-1200的项目及硬件组态?
  9. matlab获得帮助的途径,在MATLAB 中获得帮助的途径 ()。A、帮助浏览器B、help 命令C、lookfor 命令D、模糊查询...
  10. deepin编译Linux内核,为Deepin编译Linux 5.10内核的悲伤故事经历:从入门到卸载