我在哪里可以了解计算机的低级工作原理?

时间:2011-01-02 23:02:53

标签: assembly hardware low-level

到目前为止,我已经编程了大约11年,并使用了许多不同的编程语言,从Python到C.

然而,我感到惭愧的是,我仍然缺少很多基础知识,而这些基础知识都建立在所有这些基础知识之上:

  • 如何构建可执行文件的堆栈和堆栈以及它们如何工作

  • CPU如何工作

  • 什么是时钟周期

  • 什么是数据总线

  • 我主板上的北桥和南桥如何工作

  • 低级二进制逻辑/计算

这些只是一些例子,我正在寻找的是对此的一些很好的介绍,因为我觉得这只是成为一名优秀程序员所需的知识。

6 个答案:

答案 0 :(得分:4)

我喜欢这本书(它不是教科书)。

Code: The Hidden Language of Computer Hardware and Software

答案 1 :(得分:2)

听起来像我在麻省理工学院上课的一个名为6.004的课程正是你所寻找的。该课程从头开始对计算机进行了一次调查。我们从信息理论开始(什么是信息,如何将其表示为位等),然后讨论晶体管,然后组合晶体管以制作基本的逻辑功能,并将这些逻辑功能组合起来制作一个简单的添加机器,等等,一直到建立一个基本操作系统的基本CPU。

如果这听起来像你正在寻找的,你可以仔细阅读course web page上的讲义和视频。它有一些好东西,虽然那些学生也会去做讲座,做实验等等。

我听说,Nisan和Schocken撰写的一本优秀的独立书籍涵盖了基本相同的材料,即“计算系统的要素:从第一原理构建现代计算机”。它有动手练习,你可以做到真正掌握它。我买了这本书的很多人的建议,但还没有机会完成它。

答案 2 :(得分:1)

我认为你应该从assembly开始,因为这是低级编程语言。 例如,堆栈基本上就是SP register。 因此,了解汇编,cpu寄存器,如何将指令从内存中提取到cpu然后执行将是一个很好的起点。

答案 3 :(得分:1)

在我看来,通过玩乐来学习它的最佳方式。使用微处理接口学习编译器,系统设计和架构非常有趣。所以我的建议是开始使用Atmel AVR kitMotorola 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)

我确信这类东西有在线资源,但在this计算机架构课程中也很好地涵盖了这一点。我也很喜欢这门课程的book

然而,它并没有真正涵盖我喜欢的实际x86方面(我们设计了一个MIPS处理器并为它编写了汇编代码,最终为它编写了一个C编译器)。

为了填补我们设计的示例和我的实际机器之间的差异,我建议使用Windows Internals book。并且可能采用OSR course

如果你更喜欢Linux方面,那么coursesbooks也是如此。