我正在搜索关于“C程序如何运作”的博客文章一个月。他们中的大多数都像
我想我会先阅读有关编译器如何理解程序流入机器的工作原理。龙书似乎是普遍的首选。但说实话,这太过密集了。我现在还不够好,无法完成所有这些工作。
所以我开始阅读有关硬件的内容。但是,他们也解释了总线,I / O信号,内存结构,编写缓存友好代码等等。但没有适当的例子。
但我仍然无法让自己满意或能够完全想象这个过程。
2小时前我决定提出这个问题。(因为我害怕它可能对SO社区,或非主题问题或其他可以选择的类别没有用)并且我没有找到任何与之相关的帖子这完全是。有一个关于“编译器如何编译”,但答案显示这是一个太广泛的问题。
我的问题是:
我想知道C程序的工作原理。如果您无法明确告诉我,请将我重定向到另一个网站上的书或其他帖子,这些帖子可以为我提供答案。
我在这里,直到得到回复。如果您对此帖有任何建议,请告诉我。这不是我的第一语言,所以请把我所有的句子都当作柔软和礼貌的。
感谢。
更新:
除了接受的答案外,还有一些非常好的链接以及提供部分答案的建议或进一步了解我想要了解的内容的方法。
答案 0 :(得分:5)
到目前为止,这个问题的最佳答案来自Noam Nisan和Shimon Schocken撰写的“计算系统的要素”一书。本书从最简单的电子组件开始,将它们组装成一个工作处理器,为它发明一种简单的汇编语言,为此编写汇编程序,最后向您展示如何将高级语言编译到其上。阅读本书,并使用所有示例(使用模拟器作为硬件,因此不需要研讨会!),将永远改变您对计算机的看法;他将完全理解从最低级别到最高级别的所有内容,并了解它们如何协同工作。有关详细信息,请参阅the book's website。
答案 1 :(得分:1)
这个问题太宽泛了(正如你所观察到的那样)。
如果你真的想从下往上理解 - 从80年代以后的ebay购买一台旧电脑。 Sinclair Spectrum / BBC确实无关紧要,但请确保您获得大量书籍和手册。
你会学到很多东西,因为这些机器都有很好的记录,没有记录的东西被发现然后记录下来了:)
它们也比现代四核多GB内存作业简单得多。这一切都很容易适合你的头脑
或者现代的开始,Arduino或Raspberry馅饼也许。