【问题标题】:How "Hello World" works in C [closed]“Hello World”如何在 C 中工作 [关闭]
【发布时间】:2014-02-12 19:29:24
【问题描述】:

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

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

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

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

但我仍然无法满足自己或无法完全想象这个过程。

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

我的问题是这样的:

我想深入了解 C 程序是如何工作的。如果您不能明确告诉我,请将我重定向到可以给我答案的其他网站上的一本书或另一篇文章。

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

谢谢。

更新:

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

【问题讨论】:

  • 一定是黑魔法!
  • 那么这里的魔术师一定可以给我解释一下诀窍:)
  • 这是一个有用的问题,很高兴您提出这个问题。太多的初学者忽略了事情是如何运作的。顺便说一句,“Hello”和“World”不会是来自词法分析器 POV 的标记。
  • @humble_fool:我不是说你应该改变它。你问了这个问题,我不希望你已经知道答案。 :)
  • "我无法继续这样的编程" - 请不要太认真,尤其是如果你一直在学习CS / 编程仅 2 年。我敢打赌,大多数程序员不知道这个问题的一半答案。您甚至想知道这很好,只是碰巧您的问题很复杂。不要仅仅因为可能需要相当长的时间来学习并有信心理解整个过程,就认为这是你的失败。

标签: c compiler-construction


【解决方案1】:

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

【讨论】:

  • www.nand2tetris.com ,它正在打开一个游戏网站。 ??
  • 有人粘贴了错误的链接...我讨厌这种情况发生。
  • 正确链接:nand2tetris.org
  • 我一定会看到的。
  • 我认为这是对当前问题的最佳答案... :)
【解决方案2】:

这个问题太宽泛了(正如您所观察到的)。

如果您真的想自下而上地了解 - 从 ebay 上购买 80 年代的旧电脑。 Sinclair Spectrum/BBC 这真的没关系,但请确保您获得大量与之配套的书籍和手册。

你会学到很多,因为这些机器都有很好的文档记录,没有记录的东西会被发现并记录下来:)

它们也比现代四核多千兆字节内存工作简单得多。这一切都将轻松融入您的脑海中

或者对于现代的开始,也许是 Arduino 或树莓派。

【讨论】:

  • 我不同意。例如,旧机器(除非 1940 年之前的物理机器)不会像基于 AMD64 的机器那样显示内部工作原理。事实上,它们可能隐藏得更多,因为人们可以轻松下载英特尔开发人员手册并了解其架构理论,而在相同程度上了解 Z80 的选择更少。
  • Z80(实际上并未在 BBC Micro 中使用)可能是记录最多的处理器之一。我花了 1(一个)谷歌直接从 Zilog 获得了整个手册和架构的详细信息。没有什么是隐藏的。 1(一)google找一个C编译器和汇编器。这一切都简单得多,资源都在那里。
  • @Vortico:关于 Speccy/BBC 的问题是他们并没有真正的操作系统,所以您通常直接与硬件打交道。 CPU 在概念上比现代的简单得多——没有缓存、没有内存管理器、没有微指令转换和超标量架构。他们只是阅读一条指令,做某事,然后阅读下一条指令,依此类推。这是 RasPi 的一个缺点 - 硬件非常复杂。
  • 是的,做这样的事情也是我的愿望。但这非常耗时,在假期之前可能无法实现。
猜你喜欢
  • 2022-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多