我想回过头来了解更多关于编译器、处理器和内存如何在我的程序上运行的信息。我也对所有这一切所依赖的物理学感兴趣。任何好的参考资料或书籍将不胜感激......
12 回答
对于编译器而言,终极书籍是《龙之书》,即《编译器设计原理》。一开始有点重,但是每次通过它都会变得更容易。这是一本经典之作,所有认真的编程/计算机科学学生都应该阅读。
我的第一个建议是已经建议的代码。Hennessey & Patterson的Computer Organization & Design是一本更好但更难的关于处理器主题的书。您可能会在 Amazon 或 Half.com 上寻找旧版本。它们会便宜很多,而且信息基本相同。
这些都将教您处理器如何工作、汇编语言等的基础知识。这将帮助您了解如何解释您的程序,以及根据您的设计可能存在什么样的性能瓶颈。
在我看来,您想获得计算机科学学位。:-)
最简单的介绍,而且写得很好,是 Charles Petzold 的 Code
我通常不会同时想到物理和编译器。
这个链接可能会让你思考。
为 C64 之类的东西编写一个简单的模拟器。通过思考如何模拟 CPU、内存和其他芯片,您将了解这些简单机器的工作原理。今天的计算机几乎以相同的方式运行,但复杂性更高,但基本思想是相同的。
您的模拟器不必非常快 - 尝试获取 C64 欢迎信息,如果您的代码正确 - 您应该能够戳和编写基本程序并让它们工作:)
10 PRINT "DONT LISTEN TO ME - APPLE //E's RULE"
20 转到 10
我建议学习足够的汇编程序,以便能够在汇编程序中编写一个简单的Hello World程序。
这将准确地教您 CPU 在寄存器和内存级别是如何工作的。
它还将向您很好地介绍如何将源代码转换为目标文件以及链接器如何将所有这些目标文件组合在一起以创建工作程序。
拿起任何轩尼诗和帕特森的书。 计算机体系结构 - 定量方法或计算机组织与设计 - 硬件接口
在亚马逊上买一本关于“计算机组织”或“计算机架构”的书。这是我上大学时用的。它不太厚,会给你基础知识,从门级一直到内存的组织方式和程序的编写方式。如果在此之后,你想更深入地研究物理学,那么你会想要一本关于半导体物理学的书。(但如果我是你,我会先在维基百科上查找“逻辑门”、“二极管”和“晶体管”!)
如果您真的想进入处理器/ IC 的物理领域,您需要具备扎实的电磁学/电路分析背景。这当然不是一件容易的事,也不会真正让你成为一个更好的程序员。如果你真的有兴趣,可以向 EE 朋友借一些书!
一个抽象的层次是门级,程序员通常可以理解它,因为它都是关于逻辑的。
在阅读了 Steve Yegge 的关于了解编译器的建议后,我做出了类似的决定。我真的很喜欢 Nisan 和 Schocken 的《计算系统的要素:从第一原理构建现代计算机》,它首先是一本教科书,其次是针对新生或高年级学生的一个学期课程,第三是提供讲座和交叉课程的网站-平台仿真-仿真软件:http ://www1.idc.ac.il/tecs/ (TECS)
主题从 NAND(用 HDL 编程数字逻辑电路)到触发器、ALU 和寄存器、汇编器、解析和编译器、操作系统和 GUI。您,学生,在网站上提供的硬件模拟器或软件模拟器上实现这些主题中的每一个。对我来说,本科生可以在 3--4 个月内深入了解这些想法,这是对人类创造力的一种庆祝。其中一位作者/教授就该主题进行了 Google 技术讲座,如果您有一个小时的时间从他们的课程中抽出时间,那么值得一试。
我不能推荐一个同样引人入胜的计算物理学资源,但我可以敷衍地说,我的电气工程系的前两个核心 EE 课程的学生可以学习(如果他们选择的话,可以同时学习)是电路 1 和半导体 1。前者处理与电压、电流、电感器、电容器、运算放大器等有关——而后者涉及量子力学、晶体、掺杂、电荷载流子等,最直接地涉及数字处理和存储设备的物理学。但是,我很难想象像 TECS 这样的动手模拟环境来解决这样的主题,使它更适合学术而不是业余爱好者/专业学习?