Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture 需要帮助理解基本的计算机架构吗_Architecture - Fatal编程技术网

Architecture 需要帮助理解基本的计算机架构吗

Architecture 需要帮助理解基本的计算机架构吗,architecture,Architecture,我们正在学习计算机如何在课堂上实际执行C程序。我不清楚以下几部分是如何组合在一起的:处理器(或CPU)、寄存器文件、运行时堆栈、程序计数器、虚拟地址、程序内存 让我解释一下我目前知道或认为我了解的情况: 处理器(或CPU)将把.c文件编译成计算机可以理解和执行的可执行机器级代码 存在一个堆栈,可以将指令推送到该堆栈上,以便计算机可以执行所述指令。问题:该堆栈寄存器相对于CPU位于何处?指令是从哪里获取的 此堆栈可以保存%eax、%ecx、%edx等寄存器,这些寄存器有时保存数值,有时保存指向“内

我们正在学习计算机如何在课堂上实际执行C程序。我不清楚以下几部分是如何组合在一起的:处理器(或CPU)、寄存器文件、运行时堆栈、程序计数器、虚拟地址、程序内存

让我解释一下我目前知道或认为我了解的情况:

  • 处理器(或CPU)将把.c文件编译成计算机可以理解和执行的可执行机器级代码
  • 存在一个堆栈,可以将指令推送到该堆栈上,以便计算机可以执行所述指令。问题:该堆栈寄存器相对于CPU位于何处?指令是从哪里获取的

  • 此堆栈可以保存%eax、%ecx、%edx等寄存器,这些寄存器有时保存数值,有时保存指向“内存”中存储的项的地址。问题:这个内存在哪里

  • 存在一个程序内存,其中包含程序的可执行机器代码、用户分配的内存块以及用于管理过程调用和返回的运行时堆栈。问题:同样,这个程序内存相对于CPU位于哪里


  • 我现在的想法是如此混乱,我甚至不确定我问的问题是否正确,或者这些主题是否应该是相关的……一张分类图将非常有用,因为我只是看不出所有的东西应该如何组合在一起。我甚至不知道我说的是否有一点正确…

    基本上,你需要看看:

    本网站上的图片提供了电脑主要组件的良好概述:

    然而,我将解释一些这方面的内容,重点是您的问题(与CPU相关的东西在哪里):

    CPU

    • CPU:一种通常被称为计算机“大脑”的微芯片——它负责实际的计算工作。程序是从第一条指令开始执行的指令的简单“列表”

    • ALU:(算术逻辑单元)驻留在CPU内部并实际执行计算

    • 寄存器:驻留在CPU内部的内存单元。存储计算中所需的值(或其结果)

    • 程序计数器:CPU内的一个特殊寄存器,包含对将要执行的指令的引用

    RAM(内存) RAM是计算机的“工作”内存

    • RAM只是大量存储值的单元

    • RAM比硬盘快得多。但是RAM比CPU内部的寄存器慢得多

    • 当你启动一个程序时,它的指令会从你的硬盘加载到RAM中

    • 程序通常需要处理大量数据(编程时使用的变量、对象等)——这些数据也存储在RAM中

    • 堆栈是驻留在RAM中的数据结构(至少在我们的PC中)。堆栈保存函数的局部变量、函数参数和地址(如果从函数A调用函数B,则函数A的下一条指令的地址存储在堆栈上。因此,当程序完成函数B时,它可以右跳回它离开函数A的位置)(在Wikipedia中搜索“堆栈”。)

    CPU(及其寄存器)和RAM(数据存储器、堆栈等)通过总线连接在一起


    这只是一个概述,当你深入了解细节时,它会变得非常乏味-我希望它能有所帮助,但是:-)

    1是编译器,而不是处理器。不幸的是,这个问题对于堆栈溢出来说太广泛了。有许多关于计算机体系结构的好教程已经编写并可用。这里的任何答案都只能涵盖基本内容。哦,好的。我想在问更多问题之前,你最好先多读一点。有很多很多网站都涉及处理器、寄存器、内存、编译器和高级语言(如C)的基础知识。你们有什么可以推荐的资源吗?