Memory 编译器及其他

Memory 编译器及其他,memory,compiler-construction,physics,processor,Memory,Compiler Construction,Physics,Processor,我想回顾过去,进一步了解编译器、处理器和内存如何在我的程序上运行。我还对这一切所依赖的物理学感兴趣。任何好的参考资料或书籍都将不胜感激……最简单的介绍,写得非常好的是Charles Petzold的代码 我通常不会同时想到物理和编译器 可能会让你思考。对于编译器来说,最重要的一本书是《编译器设计原则》。刚开始有点沉重,但每次传球都会变得容易。这是一本经典著作,所有编程/计算机科学专业的认真学生都应该阅读。为C64之类的东西编写一个简单的模拟器。通过思考如何模拟CPU、内存和其他芯片,您将了解这些

我想回顾过去,进一步了解编译器、处理器和内存如何在我的程序上运行。我还对这一切所依赖的物理学感兴趣。任何好的参考资料或书籍都将不胜感激……

最简单的介绍,写得非常好的是Charles Petzold的代码


我通常不会同时想到物理和编译器


可能会让你思考。

对于编译器来说,最重要的一本书是《编译器设计原则》。刚开始有点沉重,但每次传球都会变得容易。这是一本经典著作,所有编程/计算机科学专业的认真学生都应该阅读。

为C64之类的东西编写一个简单的模拟器。通过思考如何模拟CPU、内存和其他芯片,您将了解这些简单的机器是如何工作的。今天的计算机基本上是以同样的方式运行的,复杂得多,但基本思想是一样的

你的仿真器不一定非得非常快——试着把C64的欢迎信息拿出来,如果你的代码做得对的话——你应该能够编写基本的程序并让它们工作:)


20转到10

我建议学习足够多的汇编程序,以便能够用汇编程序编写一个简单的Hello World程序

这将确切地告诉您CPU在寄存器和内存级别的工作方式


它还将很好地向您介绍如何将源代码转换为目标文件,以及链接器如何将所有这些目标文件组合在一起创建一个工作程序。

在Amazon上挑选一本关于“计算机组织”或“计算机架构”的书。当我在大学的时候。它不太厚,并且将为您提供基础知识,从门级别一直到内存的组织和程序的编写。在这之后,如果你想更深入地研究物理学,那么你会想读一本关于半导体物理学的书。(但如果我是你,我会从维基百科上的“逻辑门”、“二极管”和“晶体管”开始查找!)

我的第一个建议将是已经提出的建议。Hennessey&Patterson写了一本关于处理器的更好但更难的书。您可以在Amazon或Half.com上查找旧版本。它们会便宜得多,而且信息基本相同


这些都将教会您处理器工作原理、汇编语言等的基础知识。这将帮助您了解如何解释您的程序,从而了解基于您的设计可能存在的性能瓶颈。

选择任何一本轩尼诗和帕特森的书。
或者

如果你真的想进入处理器/集成电路的物理领域,你需要有扎实的电磁学/电路分析背景。这当然不是一件容易的事情,也不会让你成为一个更好的程序员。如果你真的感兴趣,可以向你的朋友借一些书


从这一点上抽象出来的是门级,程序员通常可以在门级上摸索,因为它都是关于逻辑的。

我觉得你好像想获得计算机科学学位。:-)

费曼在这方面做得很好:


这解决了你问题的第二部分。

在阅读了Steve Yegge关于学习编译器的建议后,我做出了类似的决定。我一直很喜欢尼桑和肖肯的《计算系统的要素:从第一原理构建现代计算机》一书,第一本是教科书,第二本是大一或大四学生一学期的课程,第三本是提供讲座和跨平台仿真模拟软件的网站:(TECS)

主题从NAND(用HDL编程数字逻辑电路)开始,一直到触发器、ALU和寄存器、汇编器、解析和编译器、操作系统和GUI。您,即学生,在网站上提供的硬件模拟器或软件模拟器上实现这些主题中的每一个。对我来说,这是对人类创造力的一次庆祝,大学生们可以在3-4个月的时间里对这一系列想法进行如此深入的研究。其中一位作者/教授就这一主题做了一次谷歌技术讲座,如果你有一个小时的时间来学习他们的课程,那么值得一看


我不能推荐一个同样令人信服的计算物理资源,但我可以敷衍地说,我的电气工程系的前两个核心EE课程学生可以同时学习(如果他们选择的话)是电路1和半导体1。前者涉及电压、电流、电感器、电容器、运算放大器等,后者涉及量子力学、晶体、掺杂、载流子等,最直接地涉及数字处理和存储设备的物理。对于我来说,很难想象像TECS这样的实际操作模拟环境适合这样的主题,但是,它更适合学术研究,而不是业余爱好者/专业研究?

这是我要推荐的书。好书。我希望我一开始就有它。再说一次,没有它迫使我自己学了很多东西。任何人都可以读一本书——这并不能证明你理解它。一个实际的例子,比如编程一些真实的东西,可以让你真正理解……任何人都可以编写一个Hello world程序。这并不意味着你真正理解了它所显示的语言,你可以从某个地方复制一些文本并运行编译器。任何人都可以通过学习像hello world这样简单的程序学到很多东西,只要他们准备花时间试着理解他们正在复制的代码。我不是一个汇编程序程序员,但我能读懂汇编程序,这要感谢我写的一两个简单的hello world程序。电压、电流、电阻——它们都是底层的物理。
10 PRINT "DONT LISTEN TO ME - APPLE //E's RULE"