当前位置: 首页 > news >正文

51制作工厂网站一个网站域名ip

51制作工厂网站,一个网站域名ip,周口河南网站建设,自己做网站麻烦吗C语言模拟最简单的计算机 以下内容参考南大“计算机系统基础”实验#xff1a;不停计算的机器 概述 如下面的伪代码所示#xff0c;计算机运行程序的过程为取指令–运行指令–更新PC的值。 while (1) {从PC指示的存储器位置取出指令;执行指令;更新PC; }取指(inst…C语言模拟最简单的计算机 以下内容参考南大“计算机系统基础”实验不停计算的机器 概述 如下面的伪代码所示计算机运行程序的过程为取指令–运行指令–更新PC的值。 while (1) {从PC指示的存储器位置取出指令;执行指令;更新PC; }取指(instruction fetch, IF) 执行一条指令前, 首先要拿到这条指令。指令究竟在哪里呢? 还记得冯诺依曼体系结构的核心思想吗? 那就是存储程序, 程序控制. 这两句话告诉我们, 指令被放在存储器中, 由PC指出当前指令的位置. 事实上, PC就是一个指针 取指令要做的事情自然就是将PC指向的指令从内存读入到CPU中。 译码(instruction decode, ID) 在取指阶段, 计算机拿到了将要执行的指令. 让我们来看看这个指令的·面貌, 睁大眼睛一看, 竟然是个0和1组成的比特串! 10111001 00110100 00010010 00000000 00000000计算机也只是个巨大的数字电路, 它只能理解0和1。 拿到指令后我们需要对指令进行翻译。指令通常包含操作码和操作数两个部分的信息。根据操作码的含义去执行对应的操作操作数一般作为该操作需要的数据。 执行(execute, EX) 经过译码之后, CPU就知道当前指令具体要做什么了, 执行阶段就是真正完成指令的工作. 现在TRM只有加法器这一个执行部件, 必要的时候, 只需要往加法器输入两个源操作数, 就能得到执行的结果了. 之后还要把结果写回到目的操作数中, 可能是寄存器, 也可能是内存. 更新PC 更新PC 执行完一条指令之后, CPU就要执行下一条指令. 在这之前, CPU需要更新PC的值, 让PC加上刚才执行完的指令的长度, 即可指向下一条指令的位置. 代码实操 这里直接从南京大学“计算机系统基础”实验搬过来不停计算的机器 为南大打call !!! 模拟的计算机有4个8位的寄存器, 一个4位PC, 以及一段16字节的内存. 它支持R型和M型两种指令格式, 4条指令. 其指令手册如下: 4 2 0| | | -------- mov rt,rs | R[rt] - R[rs] | R-type | |0000|rt|rs|| | | --------| | | -------- add rt,rs | R[rt] - R[rs] R[rt] | R-type | |0001|rt|rs|| | | --------| | | -------- load addr | R[0] - M[addr] | M-type | |1110| addr|| | | --------| | | -------- store addr | M[addr] - R[0] | M-type | |1111| addr|| | | --------#include stdint.h #include stdio.h#define NREG 4 #define NMEM 16// 定义指令格式 typedef union {struct { uint8_t rs : 2, rt : 2, op : 4; } rtype;struct { uint8_t addr : 4 , op : 4; } mtype;uint8_t inst; } inst_t;#define DECODE_R(inst) uint8_t rt (inst).rtype.rt, rs (inst).rtype.rs #define DECODE_M(inst) uint8_t addr (inst).mtype.addruint8_t pc 0; // PC, C语言中没有4位的数据类型, 我们采用8位类型来表示 uint8_t R[NREG] {}; // 寄存器 uint8_t M[NMEM] { // 内存, 其中包含一个计算z x y的程序0b11100110, // load 6# | R[0] - M[y]0b00000100, // mov r1, r0 | R[1] - R[0]0b11100101, // load 5# | R[0] - M[x]0b00010001, // add r0, r1 | R[0] - R[0] R[1]0b11110111, // store 7# | M[z] - R[0]0b00010000, // x 160b00100001, // y 330b00000000, // z 0 };int halt 0; // 结束标志// 执行一条指令 void exec_once() {inst_t this;this.inst M[pc]; // 取指switch (this.rtype.op) {// 操作码译码 操作数译码 执行case 0b0000: { DECODE_R(this); R[rt] R[rs]; break; }case 0b0001: { DECODE_R(this); R[rt] R[rs]; break; }case 0b1110: { DECODE_M(this); R[0] M[addr]; break; }case 0b1111: { DECODE_M(this); M[addr] R[0]; break; }default:printf(Invalid instruction with opcode %x, halting...\n, this.rtype.op);halt 1;break;}pc ; // 更新PC }int main() {while (1) {exec_once();if (halt) break;}printf(The result of 16 33 is %d\n, M[7]);return 0; }
http://www.hkea.cn/news/14476469/

相关文章:

  • 企业网站建设及维护做网站负责人风险
  • 网站怎么写容易获得关键词排名孝感门户网
  • 做服装搭配直接售卖的网站医院网站建设医生需要做什么
  • 多少钱做网站桂林网警
  • 建设网站的技术性背景电商营销推广方案
  • 门户网站建设有哪些界面设计风格泉州品牌网站设计定制
  • 高唐住房建设局网站自助wap建站
  • 庆阳北京网站建设搜索引擎优化的步骤有哪些
  • wordpress 懒人图库新乡seo优化
  • 访问数据库的网站开发语言网站代码快捷键
  • 写过太原的网站找人做网站一般要多少钱
  • 自己的网站如何让百度收录怎么做网站优化 site
  • 网站 流程 工具杭州网站建设过程
  • 网站设计标注图怎么做安阳网站建设优化渠道
  • 平湖市网站建设百度h5制作
  • 学校网站建设说明网络推广专员任职要求
  • 高校网站建设意义北京搭建网站
  • 国外那些视频网站做的不错如何做枪版电影网站
  • 电商网站建设方案100例银行软件开发工资一般多少
  • 网站开发常遇到客户问题wordpress piklist
  • 如何查看网站开发商示范建设验收网站
  • 如何做请求队列防止网站高并发苏州建站公司速找苏州聚尚网络
  • 深圳网站建设一般多少钱wordpress 5.1.1主题
  • 莱芜做网站的公司资讯网站域名选购
  • 沈阳做网站客户多吗商业软文
  • 北京上海网站建设公司哪家好网站导航样式
  • 网站备案必须做前置审批吗网站建设的想法和意见
  • 手机网站建设信息农村电商网站建设分类
  • 自助模块化网站建设建设网站用的软件
  • 群晖ds218+做网站遂宁市网站建设