c - "Hello World"在 C 中是如何工作的

标签 c compiler-construction

<分区>

我正在搜索有关“C 程序如何工作”的博文一个月。他们中的大多数都喜欢

  1. 编译器做这些事情
  2. 链接器做这些事情
  3. 程序被放入内存;和堆栈、堆等。

我想我会先阅读编译器的工作原理,以了解程序进入机器的流程。龙书似乎是普遍的首选。但说实话,它太密集了。我现在还不够好,无法经历这一切。

所以我开始阅读有关硬件的知识。但也在那里,他们解释了总线、I/O 信号、内存结构、编写缓存友好代码等。但没有适当的示例。

但我仍然觉得自己不满意,也无法完全想象这个过程。

2 小时前我决定问这个问题。(因为我害怕它可能对 SO 社区没有用,或者离题问题或其他可否决的类别)而且我没有找到任何与此相关的帖子这正是。有一个关于“编译器如何进行编译”的问题,但答案表明这是一个过于宽泛的问题。

我的问题是:

我想深入了解 C 程序的工作原理。如果您不能明确告诉我,请将我重定向到可以给我答案的书或其他网站上的其他帖子。

我一直在这里,直到收到回复。如果您对这篇文章有任何建议,请告诉我。而且这不是我的母语,所以请把我所有的句子都当成是温和有礼貌的。

谢谢。

更新:

除了已接受的答案外,还有一些非常好的链接和建议,这些链接和建议给出了部分答案或进一步理解我想要理解的内容的方法。

最佳答案

到目前为止,这个问题的最佳答案来自 Noam Nisan 和 Shimon Schocken 合着的“The Elements of Computing Systems”一书。本书从最简单的电子元件开始,将它们组装成一个工作处理器,为其发明一种简单的汇编语言,并为此编写一个汇编器,并最终向您展示如何将高级语言编译到它上面。阅读这本书并使用所有示例(使用硬件模拟器,因此不需要研讨会!),将永远改变您看待计算机的方式;他将从字面上理解从最低级别到最高级别的所有内容,并了解它们如何协同工作。参见 the book's website了解更多信息。

关于c - "Hello World"在 C 中是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21737736/

相关文章:

c - 如何在 c 中迭代地将文本附加到 .txt 文件

c - 尝试通过数组打印用户输入时出现意外输出

检查 C 中的位 - 错误答案?

c - 在单独的行中打印每个单词

compiler-construction - 递归下降解析器和函数式编程

asp.net - IIS 重新编译 ASP NET 网站

c++ - 为什么变量的打印地址会在每次执行时打印随机值,即使它是 C 中的逻辑地址?

c++ - 编译 C++ 程序

gcc - 更改 GCC 代码。如何测试新增功能的添加情况?

c# - "=="运算符的行为不像编译器生成的匿名类型的 Equals() 覆盖