我们正在了解计算机如何在课堂上实际执行C程序。我非常不清楚以下部分如何实际组合在一起:处理器(或CPU),寄存器文件,运行时堆栈,程序计数器,虚拟地址,程序存储器。
让我解释一下我目前所知道或认为我理解的内容:
存在可以推送指令的堆栈,以便计算机可以执行所述指令。问题:这个堆栈寄存器在哪里与CPU有关?指令从哪里拉出来?
此堆栈可以保存%eax,%ecx,%edx等寄存器,这些寄存器有时会保存数值,有时会保存指向存储在" memory"中的项目的地址。问题:这个记忆位于何处?
存在程序存储器,其包含程序的可执行机器代码,用户分配的存储器块以及用于管理程序调用和返回的运行时堆栈。问题:同样,这个程序存储器与CPU的关系在哪里?
我的想法现在如此混乱我甚至不确定我是否正在提出正确的问题,或者这些话题是否应该是相关的......各种各样的图表会非常有用,因为我只是看不出一切应该如何组合在一起。我甚至都不知道我所说的话是否远远正确......
答案 0 :(得分:2)
基本上,您需要查看:Von Neumann Architecture
本网站上的图片概述了PC的主要组成部分:http://www.doc.ic.ac.uk/~eedwards/compsys/memory/
但是,我会解释一下这些内容,重点关注你的问题(与CPU有什么关系):
<强> CPU 强>
CPU :一种通常被称为&#34;大脑&#34;一台电脑 - 它做实际的计算。一个程序是一个简单的列表&#34;从第一条指令开始执行的指令。
ALU :(算术逻辑单元)驻留在CPU内部并实际执行计算
寄存器:驻留在CPU内部的存储器单元。存储计算中所需的值(或其结果)
程序计数器:CPU内部的一个特殊寄存器,包含对将要执行的指令的引用。
RAM (内存) RAM是&#34;工作&#34;记住你的电脑。
RAM只是用于存储值的大量单元格
RAM比硬盘快得多。虽然
启动程序时,其指令从硬盘加载到RAM中
程序经常需要处理大量数据(这些是您在编程时使用的变量,对象等) - 这些也存储在RAM中
堆栈是一种驻留在RAM内部的数据结构(至少在我们的PC中...)。堆栈保存局部变量,函数参数和函数地址(如果从函数A调用函数B,函数A的下一条指令的地址存储在堆栈中。所以当程序完成函数B时它可以直接跳回到它离开功能的地方A)(搜索维基百科&#34; stack&#34; ..)
CPU(带寄存器)和RAM(数据存储器,堆栈......)与总线连接在一起。
这只是一个概述,当你研究细节时它会非常有用 - 我希望它有点帮助,但是: - )