新华一城书集店铺主页二维码
新华一城书集 微信认证
上海新华书店官方微信书店
微信扫描二维码,访问我们的微信店铺
你可以使用微信联系我们,随时随地的购物、客服咨询、查询订单和物流...

CPU眼里的C/C (Plus版)

100.44
运费: ¥ 5.00-20.00
库存: 4 件
CPU眼里的C/C  (Plus版) 商品图0
CPU眼里的C/C  (Plus版) 商品图1
CPU眼里的C/C  (Plus版) 商品图2
CPU眼里的C/C  (Plus版) 商品图3
CPU眼里的C/C  (Plus版) 商品图4
CPU眼里的C/C  (Plus版) 商品缩略图0 CPU眼里的C/C  (Plus版) 商品缩略图1 CPU眼里的C/C  (Plus版) 商品缩略图2 CPU眼里的C/C  (Plus版) 商品缩略图3 CPU眼里的C/C  (Plus版) 商品缩略图4

商品详情

前 ???言

大家好!我是阿布,关注“没有用”的知识。很高兴看到大家对本书第一版《CPU眼里的C/C十十》给予了热烈的反馈。在与读者的频繁交流中,我发现大家不仅接受了从底层视角解读编程语言的方式,甚至意犹未尽,渴望更深入的探讨。这让我更加坚定了一个信念:这本书可以为读者带来更大的价值。如果说第一版是我们之间的初次交流,那么这本《CPU眼里的C/C十十[Plus版]》便是一场火力全开的深度对话,让我们一起更进一步,探索C/C十十的本质和计算机的运行规律。

本书延续了前作的风格,继续从CPU的视角解读我们常用的编程语法规则。你会发现,即使是对人来说非常玄幻复杂的语法规则,编译器实现起来却非常简洁。当你看到本书,用朴素的C语言实现C十十的this指针、继承和虚函数时,你会发现我们编写的C语言版本代码和传统的C十十版本代码不仅运行结果相同,甚至对应的CPU指令也完全一致。相信在此过程中,你对一些语法规则的理解不仅仅停留在纸面背诵上了,而是深入到工作原理和实现细节上了。

同时,本作也吸收了大量的读者反馈,针对读者反馈的问题,进行了重点分析和解读。其实这些问题又何尝不是阿布求学中的问题呢?我们在学校和书本上获取并记住了大量计算机概念,但很少有人会通过代码和CPU指令去验证这些概念。或许我们真的理解了这些概念,但当我们真正面对代码实现和CPU指令时,那种获得感远非单纯记忆可以比拟。

当然,现代计算机系统、CPU和编译器都在不断进化,它们不可能完全按照几十年前的剧本或教科书的方向演化,所以一些实现细节难免与我们求学时的观点有所出入,甚至在局部地方还有些相斥,但这很正常。如果完全一致,反而会让阿布觉得不可思议。计算机科学不是宗教,敢于对已学知识提出质疑,正是我们进步的开始。再次感谢热心读者的积极反馈,每一次交流都让我受益良多。谢谢!

令人意外的是,第一版还有一部分从事Java开发的读者。C/C十十是一门非常特别的编程语言,可以用它串联CPU、编译器、操作系统、底层驱动、物理硬件的全部工作流程。所以,如果C/C十十并不是您工作、学习中的主力语言,相信本书也会为您打开一扇底层之门,成为您深入理解HTML、Java、Python、JavaScript等编程语言的基石。

另外,相比第一版,本书的篇幅增加了一倍,特别新增了大量读者感兴趣的现代CPU知识,例如缓存、乱序执行和分支预测等。与《CPU眼里的C/C十十》不同的是,这里我们反其道而行之,巧妙地利用C/C十十语言,把这些所谓“透明、不可见”的现代CPU特性展示出来。对于这些内容,我们或许称之为“C/C十十眼里的CPU”更为合适。这些内容不仅本身非常有吸引力,再配上阿布为大家精心准备的极简代码,相信读者一定会从中受益良多。读完本书后,你或许会由衷地感受到编程语言和CPU之间是一种“你中有我,我中有你”的关系。

除了讲解具体的知识点,阿布还分享了很多在微软、高通工作期间经历的有趣故事。尽管很多大公司会投入大量的资源,去构建烦琐、苛刻甚至有点无所不包的DevOps环境,这些投入,往往在中小公司眼里是over_engineering(过度)的,可能是难以接受的成本支出。但这种方式确实可以尽早地发现代码bug,并将其消灭在萌芽状态。不过尽管机关算尽,还是有些bug由于其特别的底层属性,仍可以安然通过各种检查。这时,能够识别并解决问题的 “英雄”,往往是那些“眼中有代码,心中有指令”的火眼金睛的工程师。大家不妨参考一下这些案例,看看自己工作中,是否也遇到过类似的软件故障?如果换成你,你又会如何处理呢?阿布个人觉得这些“没有用的”底层知识,往往在解决那些语法层面近乎完美,但实则暗藏玄机的bug时,有扭转乾坤的作用。

总的来说,如果说第一版读起来是丝滑、柔顺的感觉的话,那么本书读起来将更加弹牙、有嚼劲。你将看到一些看起来非常奇怪、没有实际用途,且人畜无害的代码;可是这些代码,一旦编译成可执行文件后,又会被计算机安全软件标记为病毒。十分期待大家跟阿布一起解锁其中的奥秘。

最后,分享一个当今程序员绕不开的话题—AI。自从2023年AI大模型横空出世以来,AI改变了我们很多的工作和学习习惯。现阶段,AI可以帮我们完成一些烦琐、乏味的体力工作,例如生成一些常规的算法、一些开发环境的配置脚本、增删改查的代码和基本的游戏框架,甚至可以秒解很多LeetCode的问题。这很大程度上提高了程序员的工作效率,把程序员从一些没有创造力的工作中解放出来。

当然,现阶段基于概率统计的AI还不够完善,特别是在逻辑深度方面还有待提高。例如给AI输入足够多的物理现象,AI也无法总结出牛顿三大运动定律。AI生成的代码也并非完美,一些不明显的bug,往往潜伏在代码的各个角落。不过这些bug在火眼金睛的资深程序员眼里,并不会造成很大困扰,因为他们可以凭借深厚的内功很快解决这些问题。所以,从这个角度看,AI是为会编程的人,特别是资深程序员服务的,而对初级程序员而言,AI则是一个不小的挑战。

同时,AI也可能对学习编程的同学造成一种错觉。当我们通过文字提示,让AI输出一堆可以运行的代码后,或许可以获得很大的满足感和成就感,但这些运行良好的代码,实际上与我们没有什么直接的关系。我们只能得到编程的结果,并不能从中领悟编程的真谛和思考的力量,此时此刻我们或许只是编程的旁观者,而非编程的冲浪者。

作为开发者和学习者,阿布鼓励大家亲身入局,手敲代码,千万不要害怕犯错,在学习的阶段,我们需要在不断地试错、犯错、改错中精进自己的技能,并实现对计算机系统的深入理解。

在工业时代,人们不会热衷于跟起重机比力量,而是通过基础研究和改进设计,来制造出更高效的起重设备。在AI时代,我们也不需要跟AI比记忆和生产代码的速度,而是通过坚实的底层知识、深度的思考能力、富有创造力的想法和软硬结合的技能,来完成一些AI无法完成的任务。

需要注意的是,阿布绝对不是反对大家使用AI,相反阿布自己就是AI的重度用户,只是希望大家明白AI能力的边界。即使AI发展到AGI(通用人工智能)甚至ASI(超级人工智能),我们也不能把一切都交给AI,而忽视对事物本质的学习与探索。如果AI的答案被视为绝对正确,不容置疑,那么它便不再是工具,而成为了神一般的存在。若AI是神,那我们又将何去何从?请始终保持独立思考,永远不要放弃质疑的精神。

希望这本书能继续为大家带来启发和帮助。感谢所有读者的支持和反馈,祝大家阅读愉快!

作者

2025年12月

从底层理解编程语言的运行,将汇编语言、计算机组成原理等计算机基础课结合

用CPU的视角,重新解读:最简单、最熟悉、最疑惑的编程语法;自然粘合:计算机组成原理、汇编语言、程序设计等课程,让它们有机、系统的呈现整个计算机运作过程。带领读者探索“简单”中的“不简单”;剖析“复杂”中的“简洁”;在解决困惑多年的热点问题中,提升读者的编程内功。做到:眼中有代码,心中有指令。本书使用现代化的软件工具,简化分析过程;从CPU的视角出发,重新解读“最简单”的语法;简洁但不简单;不投喂知识,激发读者思考;注重实践,所有代码均开源(GitHub托管);自然粘合:计算机组成原理、汇编语言、程序设计

杨晓涛,硕士,就职于微软(中国)有限公司,从事:云计算、IoT、边缘计算等方面的软件开发工作;拥有10年以上的编程实践。在知乎、B站等社交平台发布过若干计算机课程,拥有近千万的视频播放量,和观众、读者拥有良好、稳定的互动。

目 ???录

第1章 预备知识

阅读建议 001

1.1 极简现代计算机系统 002

1.2 工具介绍 008

1.3 CPU眼里的程序运行 011

1.4 CPU眼里的汇编语言 014

第2章 基础语法

阅读建议 022

2.1 CPU眼里的main函数 023

2.2 CPU眼里的变量 025

2.3 CPU眼里的goto、if else 030

2.4 CPU眼里的指针变量 033

2.5 CPU眼里的数组 038

2.6 CPU眼里的数组越界 ?042

2.7 CPU眼里的引用 049

2.8 CPU眼里的i十十和十十i 052

2.9 代码陷阱之类型转换 055

第3章 函数原理

阅读建议 058

3.1 CPU眼里的参数传递 059

3.2 CPU眼里的函数括号 066

3.3 CPU眼里的函数调用和返回 070

3.4 CPU眼里的函数指针 077

3.5 CPU眼里的函数返回值 079

3.6 CPU眼里的堆和栈 085

3.7 CPU眼里的全局变量、静态变量和临时变量 091

3.8 CPU眼里的变长数组 096

3.9 函数实验之回溯函数调用关系 100

第4章 高级指针

阅读建议 104

4.1 CPU眼里的指针本质和风险 105

4.2 CPU眼里的数组和指针 108

4.3 CPU眼里的字符串和字符数组 114

4.4 CPU眼里的数组和双重指针 119

4.5 CPU眼里的void指针 123

4.6 回调函数的故事 132

4.7 指针为什么这么难? 136

第5章 C十十特性

阅读建议 139

5.1 CPU眼里的this 140

5.2 CPU眼里的虚函数 142

5.3 CPU眼里的构造函数 147

5.4 CPU眼里的析构函数 150

5.5 CPU眼里的class和struct 153

5.6 CPU眼里的多态 160

5.7 CPU眼里的模板 165

5.8 CPU眼里的auto 167

5.9 CPU眼里的thread_local 171

5.10 CPU眼里的Lambda 175

5.11 CPU眼里的运算符重载和函数对象 180

5.12 CPU眼里的malloc和new 187

5.13 面向对象实践之依赖反转 190

第6章 高级编程

阅读建议 195

6.1 CPU眼里的常量 196

6.2 CPU眼里的右值 199

6.3 CPU眼里的volatile 204

6.4 CPU眼里的系统调用 210

6.5 CPU眼里的大端、小端 215

6.6 CPU眼里的上下文 218

6.7 CPU眼里的setjmp和longjmp 222

6.8 CPU眼里的竞争和锁 230

6.9 CPU眼里的Atomic 237

6.10 CPU眼里的Python和C 243

6.11 CPU眼里的键盘驱动 247

6.12 CPU眼里的Windows蓝屏 253

第7章 现代CPU的高级功能及风险

阅读建议 260

7.1 CPU眼里的虚拟内存 261

7.2 CPU眼里的进程、线程 267

7.3 CPU眼里的地址映射 275

7.4 CPU眼里的乱序执行 282

7.5 CPU眼里的乱序执行和内存屏障 286

7.6 CPU眼里的缓存 294

7.7 CPU眼里的分支预测 300

新华一城书集店铺主页二维码
新华一城书集 微信公众号认证
上海新华书店官方微信书店
扫描二维码,访问我们的微信店铺
随时随地的购物、客服咨询、查询订单和物流...

CPU眼里的C/C (Plus版)

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

打开微信,扫一扫

或搜索微信号:xhbookmall
新华一城书集微书店官方微信公众号

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏