深入计算机底层,从几本靠谱的书开始

计算机底层的原理很复杂,能够把这些复杂的知识用准确,生动,通俗易懂,且具备可操作性的方式写成文字的作者真的很了不起,而我这就有几本这样的书推荐给大家,它们分别是《编码-隐匿在计算机软硬件背后的语言》([ 美]Charles Petzold著),《汇编语言》(王爽著),《30天自制操作系统》([日]川合秀石著),下面对这几本书做简单的介绍

《编码-隐匿在计算机软硬件背后的语言》这本书是偏向数字电路的,从硬件这一层面讲解了一些基本电子元器件的工作方式,比如8位加法器,触发器,锁存器等等,然后再进一步将这些电子元期间组合成内存,甚至cpu,简单的说,它就是告诉你“计算机是如何工作的”。可是当提到数字电路的时候,你脑子里首先想到的是什么?是那些跟一座破庙里面的蜘蛛网一样混乱的电路图?晦涩难懂的概念?看似复杂的逻辑?跟枕头一样厚的教科书?我不知道你是怎么想的,反正大学里面的数字电路这门课给我的印象就是这样,当然,我对这门课毫无兴趣。可是当我看完这本书的时候,我才发现,原来数字电路不是用来死记硬背的,复杂的逻辑完全可以从简单的逻辑入手推导过来。作者用导线,电灯泡,开关,这3个家喻户晓的东西拼装出一个个功能各异的元器件,然后再把元器件横向拼装成更复杂的器件,所以整本书的知识结构非常有层次感,在循序渐进的学习过程中,你会觉得一些原本认为复杂难懂的东西是这样“理所当然的简单”。更好玩的是,你完全可以把书上介绍的电路实现一遍,比如去做个内存,甚至cpu出来,你不需要去买二极管,电路板,电焊铁,焊锡丝等等这些工具,只需要下载个《minecraft》(中文名《我的世界》)游戏就行,这是一款模拟现实世界的沙盒游戏,你千万不要被这游戏的低像素给吓跑了,耐心点,你会发现里面有“红石”,“中继器”,“开关”等等元素,你可以用它们模拟出现实中的电路。我当初就在游戏里面实现了一个8位加法器,如下图所示。

这就是输入端了,那9个开关看见没?他可以输入0,1(最右边的开关是控制进位的),而红色的一条条的就是“导线了”。

这是输出端,最左边这位是溢出位,右边8位正常输出,如果石头上面的“火柴”一样的东西亮了,就表明输出是1。

那天晚上花了很长时间才做完这个加法器,这时看到远处太阳升起来,感觉特别美呢!

这是别人做的计算器

《汇编语言》不是列举一堆的汇编指令,告诉你每个指令该怎么用,事实上这是一本指令手册该做的事情。我们知道机器指令(汇编语言和编译器的产物)是和相应的cpu绑定在一起的,而作者挑选了结构简单的8086cpu,通过讲解某些关键指令来深入理解机器工作的基本原理,让读者有底层编程的体验。有意思的是,书里面提的很多问题以及实验都很“边界”,换句话说,就是能很好的考察你到底有没有真的理解。另外,书里面讲解的很多概念,都是操作系统的基础。

《30天自制操作系统》,看到这种N天学会xxx的书,出自本能的反应就是嗤之以鼻,是的,实际上我们很难在30天搞定,但30天不是重点。关键是这本书从0开始到一个完整的操作系统每一步都有源代码,也就是说你完全可以跟着一起敲代码,最后也能做出一个操作系统来,非常具有可操作性。事实上,我觉得最牛逼的“hello word”就是在机器通电后直接在屏幕上显示“hello world”。

这几本书都有一个共性,在传授知识的方式上面很有技巧,他们通过知识屏蔽,循序渐进,类比等方式让一个个复杂的原理变的自然,看的过程中很容易领悟,也很有快感。相反,不恰当的表达方式,完全可以做到把一个人的兴趣扼杀在摇篮里,比如某些大学的教材。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CMake是一个用于构建软件的工具,它可以生成Makefile来进行编译。在使用CMake时,更新CMake版本可以使用以下方法。 1. 首先,你可以从CMake的官方网站上下载最新版本的CMake。你可以在官方网站的下载页面找到不同平台的安装包。 2. 下载完成后,根据不同平台的安装包进行安装。安装完成后,你可以通过在命令行中运行`cmake --version`来确认是否安装成功。 3. 如果你之前已经安装了旧版本的CMake,你可以选择删除旧版本并进行重新安装。删除旧版本的方法取决于你所使用的操作系统和安装方式。 4. 另外,一些操作系统或包管理工具可能提供了自动更新CMake的方法。你可以查看操作系统的文档或包管理工具的文档,了解如何使用它们来更新CMake。 总结来说,更新CMake版本的方法是从官方网站下载最新版本的CMake,并按照对应平台的安装包进行安装。另外,你也可以查看操作系统的文档或包管理工具的文档,了解更方便的更新方法。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [一篇很靠的CMake入门教程](https://blog.csdn.net/Gongzq5/article/details/100610473)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值