【问题标题】:how a program maps onto a computer's memory and operations? [closed]程序如何映射到计算机的内存和操作? [关闭]
【发布时间】:2013-05-12 11:45:18
【问题描述】:

什么为函数编写编译器,它是否为它分配内存?以及如何? 通常很容易想象数据结构存储在内存中。但是怎么操作呢?像函数体中的语句?编译器为他们做了什么?

【问题讨论】:

  • 我知道你们很聪明。但是,如果您没有时间帮助解决这个问题,请不要低估。对你来说一个简单的问题可能对其他人来说仍然很难。谢谢
  • 你的问题被关闭的原因是它不是一个精确的问题——它或多或少需要一本书来回答这个问题。您之前的问题中建议的书籍几乎相同。不要指望这里的人不会发现你在问同样的问题!
  • 我已经参考了大多数关于这个主题的书籍,但有时他们会更加困惑!然后从论坛中寻找帮助。这发生在我身上,这就是我问这个问题的原因。
  • 是的,对于此类问题,您可能会找到比 SO 更好的论坛,因为它是一个冗长且不易解释的主题。或者问一个更具体的问题,而不是问一个 200 页的书作为答案的问题。这里不太可能有人会写出 200 页的书答案。
  • 有道理。非常感谢您的信息。那么我应该删除这个问题然后帮助论坛吗?

标签: c++ c memory-management compiler-construction


【解决方案1】:

操作是您完成某项工作所需的步骤。假设您有以下代码片段:

int a = 1;
int b = 2;
int c = a + b;

这将涉及到abc的一些存储,以及将值1存储到a、值2存储到b的某种操作,然后计算a+b 并将其存储到c

了解它的工作原理是理解计算机一般工作原理的关键,而且它是一个相当复杂的主题,需要完全涵盖,我怀疑它是否适合在这里作为一个简单的问题。

【讨论】:

  • 所以编译器生成这些指令,当程序加载时内存是否存储这些指令?这就是混乱,指令如何存储数据?
  • 是的,指令存储在内存中。在大多数(现代)系统中,指令和数据都存储在同一个内存中,只是在不同的位置。在旧系统中,“代码”有时是以各种方式将内存与“数据”分开。
  • 非常感谢您的回复。那么CPU如何区分它是数据还是指令呢?
  • 通常情况下,程序以指令启动,指令仅引导至其他指令。但是,如果您编写的代码最终以某种方式“跳转”到数据,那么处理器会将这些数据解释为指令,并且只要它形成有效的指令就会继续运行。操作系统可以通过将不同的内存区域设置为“不执行此”来防止这种情况发生,但并非所有处理器和操作系统都支持。
猜你喜欢
  • 2015-09-09
  • 2022-01-05
  • 2012-03-11
  • 2015-07-16
  • 2013-04-22
  • 2016-07-13
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
相关资源
最近更新 更多