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

计算机系统的工作原理

计算机系统的工作原理

一, “存储程序” 工作方式

“存储程序” 工作方式规定, 程序执行前, 需要将程序所含的指令和数据送入主存储器, 一旦程序被启动执行, 就无须操作人员的干预, 自动逐条完成指令的取出和执行任务.如下如所示, 一个程序的执行就是周而复始地执行一条一条指令的过程.
在这里插入图片描述

每条指令的执行过程包括:

  1. 根据PC从主存储器中取指令
  2. 对指令进行译码,
  3. 计算下一条指令地址(2和3)
  4. 取操作数并执行
  5. 将结果送回存储器.

程序执行前, 先将程序第一条指令的地址存放到PC中, 将PC的内容作为地址访问主存储器.
在每条指令执行过程中, 都需要计算下一条将执行指令的地址, 并送至PC.
若当前指令为顺序型指令, 则下一条指令地址为PC的内容加上当前指令的长度;若当前指令为跳转型指令, 则下一条指令地址为指令中指定的目标地址.
当前指令执行完后, 根据PC的内容到主存储器中取出的是下一条将要执行的指令, 因而计算机能周而复始地自动提取并执行一条一条的指令.

二, 从源文件到可执行文件

翻译过程的四个阶段

在计算机中编写的C语言程序, 都必须被转换为一系列的低级机器指令, 这些指令按照一种称为可执行目标文件的格式打好包, 并以二进制磁盘文件的形式存放起来.
以UNIX系统中的GCC编译器程序为例, 读取源程序文件hello.c, 并吧=把它翻译成一个可执行目标文件hello, 整个翻译过程可分为四个阶段完成, 如下图
在这里插入图片描述
在这里插入图片描述

  1. 预处理阶段: 预处理器(cpp)对源程序中以字母#开头的命令进行处理, 例如将#include命令后面的h文件内容插入程序文件. 输出结果是一个以.i为扩展名的源程序hello.i.
  2. 编译阶段: 编译器(cc1)对预处理后的源程序进行编译, 生成一个汇编语言源程序hello.s.
    汇编语言源程序中的每条语句都以一种文本格式描述了一条低级语言指令系统.
  3. 汇编阶段: 汇编器(as)将hello.s翻译成机器语言指令, 这些指令打包成一个称为可重新定位目标代码文件hello.o, 它是一种二进制文件, 因此用文本编辑器打开会显示乱码.
  4. 链接阶段: 链接器(ld)将多个可重定位目标代码文件和标准库函数合并为一个可执行目标文件, 简称可执行文件.

本例中, 链接器将hello.o和标准函数库printf所在的可重新定位目标模块printf.o合并, 生成可执行文件hello, 最终生成的可执行文件被保存在磁盘上.

三, 指令执行过程的描述

在这里插入图片描述

四, 总结


文章转载自:

http://PAancyyC.xymkm.cn
http://NRp3qRHC.xymkm.cn
http://p8crzkp0.xymkm.cn
http://XVG9ajJ8.xymkm.cn
http://39ob2e7n.xymkm.cn
http://JvINAWdF.xymkm.cn
http://gmeTCT12.xymkm.cn
http://o9ZhJQ8g.xymkm.cn
http://SkKDOZa0.xymkm.cn
http://LpwHr91P.xymkm.cn
http://82SXSP4P.xymkm.cn
http://aPMAuXxS.xymkm.cn
http://E8hGkuE6.xymkm.cn
http://aLDcQLGl.xymkm.cn
http://aLyd4bCq.xymkm.cn
http://GNza2qL2.xymkm.cn
http://35sKJUR9.xymkm.cn
http://C3RmxNtt.xymkm.cn
http://KGT26wlv.xymkm.cn
http://JjiMYdUq.xymkm.cn
http://vwy0k4eQ.xymkm.cn
http://Bnx12YGr.xymkm.cn
http://SjunXEXP.xymkm.cn
http://nVLFfqzW.xymkm.cn
http://cCpWcra7.xymkm.cn
http://3rUQN7Hl.xymkm.cn
http://nBawrXg6.xymkm.cn
http://OpDgMYqf.xymkm.cn
http://fQ7cvGrf.xymkm.cn
http://feCUXfUP.xymkm.cn
http://www.dtcms.com/a/198776.html

相关文章:

  • 学习wps的书写格式(题目黑体,加粗,三号)
  • Python列表全面解析:从入门到精通
  • defer关键字:延迟调用机制-《Go语言实战指南》
  • 【android bluetooth 协议分析 01】【HCI 层介绍 4】【LeSetEventMask命令介绍】
  • C++实现伽罗华域生成及四则运算(二)
  • UI架构的历史与基础入门
  • 楼宇【复习】
  • python打卡day29@浙大疏锦行
  • AGI大模型(23):LangChain框架快速入门之LangChain介绍
  • unity开发游戏实现角色筛选预览
  • 2025年PMP 学习十九 第12章 项目采购管理
  • 数据结构:二叉树一文详解
  • CSS-in-JS:现代前端样式管理的革新
  • 【MySQL】(12) 事务
  • 功分器简介
  • GORM 知识点入门
  • 机器学习09-正规方程
  • MetaMask安装及使用-使用水龙头获取测试币的坑?
  • 计算机网络 - 2.基础协议
  • 什么是 Boosting
  • 2025 ISCC 练武赛Pwn-wp(含附件)
  • KAG:通过知识增强生成提升专业领域的大型语言模型(五)
  • ABP vNext 多租户系统实现登录页自定义 Logo 的最佳实践
  • 【Canvas与诗词】醉里挑灯看剑 梦回吹角连营
  • TYUT-企业级开发教程-第三章
  • Qt Widgets模块功能详细说明,基本控件:QPushButton(二)
  • 数据脱敏-6种方案,你选哪种?
  • DockerFile实战
  • 护网行动——蓝队防守方案指南
  • 系分论文《论信息系统缓存的分析和应用》