到目前为止,我已经编程了大约11年,并使用了许多不同的编程语言,从Python到C.
然而,我感到惭愧的是,我仍然缺少很多基础知识,而这些基础知识都建立在所有这些基础知识之上:
如何构建可执行文件的堆栈和堆栈以及它们如何工作
CPU如何工作
什么是时钟周期
什么是数据总线
我主板上的北桥和南桥如何工作
低级二进制逻辑/计算
这些只是一些例子,我正在寻找的是对此的一些很好的介绍,因为我觉得这只是成为一名优秀程序员所需的知识。
答案 0 :(得分:4)
我喜欢这本书(它不是教科书)。
答案 1 :(得分:2)
听起来像我在麻省理工学院上课的一个名为6.004的课程正是你所寻找的。该课程从头开始对计算机进行了一次调查。我们从信息理论开始(什么是信息,如何将其表示为位等),然后讨论晶体管,然后组合晶体管以制作基本的逻辑功能,并将这些逻辑功能组合起来制作一个简单的添加机器,等等,一直到建立一个基本操作系统的基本CPU。
如果这听起来像你正在寻找的,你可以仔细阅读course web page上的讲义和视频。它有一些好东西,虽然那些学生也会去做讲座,做实验等等。
我听说,Nisan和Schocken撰写的一本优秀的独立书籍涵盖了基本相同的材料,即“计算系统的要素:从第一原理构建现代计算机”。它有动手练习,你可以做到真正掌握它。我买了这本书的很多人的建议,但还没有机会完成它。
答案 2 :(得分:1)
答案 3 :(得分:1)
在我看来,通过玩乐来学习它的最佳方式。使用微处理接口学习编译器,系统设计和架构非常有趣。所以我的建议是开始使用Atmel AVR kit或Motorola MSP套件。另一个出发点是使用您喜欢的任何语言制作微型模拟器,并模拟来自this material的SRC Simple RISC计算机this book。
This is the project我是在课堂上使用MSP430制作的,这又很有趣。
答案 4 :(得分:0)
两个建议。
有些书籍
Windows Internals(虽然并非所有信息都适用于其他操作系统,显然)
Write Great Code: Volume 1(可能是后续卷)
The Art of Assembly Language(与第二个建议相关)
学习汇编语言:
汇编语言非常低级。实际上,它只是一种人类可读的机器代码形式(CPU的理解是1和0)。要理解汇编语言,您必须了解低级工作。这是因为与C#和Java等高级语言不同,为您自动管理的内容很少(如果有的话)。
答案 5 :(得分:0)