1

在开始编程之前,我寻求了解一些基础知识,我正在寻找有关计算机如何在核心级别上工作的基本知识。

我有一个理论,即实际上理解什么是stackoverflow,更不用说堆栈了,而不是我对计算机系统的零星知识,这将对我有更长远的帮助。

是否有任何书籍或网站可以带您了解处理器的结构并提供整体概述,并且以某种方式与数字逻辑相关的知识?

我说得有道理吗?

4

5 回答 5

1

在我看来,20 年前,我们可以理解从 BASIC 一直到操作系统、硬件、晶体管甚至量子级别的整个频谱。我不知道一个人有可能用今天的技术理解整个频谱。(多年前,每个人都在为自己的车服务。今天太难了。)

您可能感兴趣的一些“层”:

于 2010-01-12T11:21:27.420 回答
1

这真的很简单 - cpu 加载指令并执行它们,这些指令中的大多数都围绕着将值加载到寄存器或内存位置,然后操作这些值。为与连接到机器的外围设备(例如屏幕或硬盘驱动器)通信预留了某些内存范围。

回到 Apple ][ 和 Commodore 64 的时代,你可以将一个值直接放入内存位置,这会直接改变屏幕上的一个像素 - 那些日子已经一去不复返了,它被你(程序员)抽象出来了几层代码,例如驱动程序和操作系统。

您可以了解这类东西,或汇编语言(我非常喜欢),或硬件级别的 AND/NAND 门,但了解这类东西并不能帮助您编写 Web 应用程序ASP.NET MVC,或者编写一个快速而肮脏的 Python 或 Powershell 脚本。

网上有很多资源可以让你深入了解 CPU 和其他硬件的工作原理,但如果你想冷静下来,我真的认为你应该在 eBay 上购买一台旧机器或某处,并学习其特殊的汇编语言风格(我知道那里也有很多可编程的 PIC 控制器也可能很好学)。使用旧机器将消除软件抽象并使事情变得更容易学习。当您获得即时满足感时,您会学得更好,例如让精灵在屏幕上移动或通过直接切换扬声器(或使用 PIC 控制器控制小型机器人)产生声音。用那些旧机器,

于 2010-01-12T11:21:44.240 回答
1

是的,你应该阅读一些主题

John L. Hennessy 和 David A. Patterson,“计算机体系结构:定量方法”

它具有微处理器的历史和理论,(从 RISC 架构 - MIPS 开始)、流水线、内存、存储等。

David Patterson 是 EECS 系 - U. Berkeley 的计算机科学计算机教授。http://www.eecs.berkeley.edu/~pattrsn/

希望对你有帮助,这是链接

于 2010-01-12T11:12:26.283 回答
1

Tanenbaum 的结构化计算机组织是一本关于计算机如何工作的好书。您可能会发现很难读完这本书,但这主要是由于主题,而不是作者。

但是,我不确定我是否会推荐采用这种方法。了解计算机的工作原理当然会很有用,但如果你真的没有任何编程知识,你就不能真正充分利用你的知识——而且你可能还不需要这些知识。你最好学习面向对象编程和数据结构之类的主题来学习程序设计,因为除非你正在考虑在非常有限的系统上进行嵌入式编程,否则你会发现这些技能比知识更有用计算机的内部工作原理。

于 2010-01-12T11:14:28.420 回答
0

虽然我同意前面的答案,因为很难理解整个过程,但我们至少可以将其分为几类,从最低(最接近电子)到最高(最接近你实际看到的)。

最低固态器件物理(晶体管如何物理工作) 电路理论(如何组合晶体管以创建逻辑门) 数字逻辑(如何将逻辑门组合在一起以创建数字功能或数字结构,即多路复用器、全加器等) 硬件组织(数据路径如何在 CPU 中布局,冯诺依曼机的组件 -> 内存、处理器、算术逻辑单元、获取/解码/执行) 微指令(位级编程) 汇编(用字编程,但直接指定注册并永远编程甚至简单的事情)解释/编译语言(编译或解释为汇编的编程语言;操作系统可能是其中之一)操作系统(进程调度,硬件接口,抽象较低级别)高级语言(这类出现两次;这取决于语言。Java 在非常高的级别上完成,但 C 直接进入汇编,C 编译器可能是用 C 编写的)用户界面/应用程序/Gui(最后一步,让它看起来很漂亮)

你可以找到很多关于这些的信息。我只是在数字逻辑方面有点专家。如果您想从头开始了解有关数字逻辑的详尽教程,请访问我网站的电气工程菜单:

affablyevil.wordpress.com

我正在上课,并在我去的时候添加在线课程。

于 2014-02-07T08:14:38.253 回答