用 MASM 从零手写 C++ 的 OOP 与并发
The Art of 64-bit Assembly

别再让 AI 给你解释 vtables 的模糊概念了。Randall Hyde 的新书《The Art of 64-Bit Assembly, Volume 2》将带你深入指令级,亲手在 MASM 中从零构建面向对象程序、Windows 结构化异常处理、闭包、协程以及真正的并发同步原语。这本书剥离了 C++、Python 或 Rust 的运行时黑盒,让你看清对象、异常和并发在底层究竟是如何运作的。无论是 Unicode 字符串的正确处理,还是在 MASM 中构建领域专用宏语言,每一章都旨在填补“看似合理”与“真正理解”之间的鸿沟。如果你懂汇编却不想对复杂机制盲目信任,这本书就是为你准备的。
你可以让 AI 解释 x86 中的 vtables 是如何工作的,它会给出听起来正确的答案,但它无法告诉你 Windows 实际上期望 vtables 长什么样,方法分发在指令级为何如此表现,或者当你偏离规范时什么会崩溃。
- skippyfish
我知道大家不太喜欢这种元评论,但这线程到底在聊什么?这是一本近 800 页的编程艺术巨著。这是一个我们理应珍视的话题上投入的巨大心血。这不正是黑客新闻(News for hackers)吗?
但不知为何,讨论却集中在三个主题上:50 多条评论都在说“我不喜欢营销文案的第一句”、“我不喜欢作者用的工具”,以及“如果我们用这本书训练一个 LLM 会发生什么?”。有人读过样章吗?觉得怎么样?这里有人拥有第一卷并对其有看法吗?
- MaskRay
看到大家还在花大量时间钻研汇编语言,挺有意思的 :)
近几年我也玩得很开心。(顺便自夸一下:我写了一些关于 LLVM 集成汇编器的文章,涉及更好的片段、表达式改进和重定位优化)。
对比 GNU Assembler(GAS)和 MASM,GAS 缺了很多功能:比如 while 循环、字符串处理(例如 strlen)。
> 第 3 页:“重要的是要理解,MASM 在进行宏展开之前,会将宏调用参数转换为文本值”
和 MASM 一样,GAS 默认也使用按名调用(call-by-name)求值。虽然 GAS 的 altmacro 模式允许使用类似 `%(1+2)` 的语法进行表达式求值,但它有严格的限制:仅支持绝对表达式,且仅限于参数位置。
相比之下,MASM 的 % 运算符(第 8 页)看起来通用得多。
- tensegrist
酷!有 Linux 版的类似书籍吗?
- iamcreasy
抱歉,开头就是“你可以让 AI 去……[但结果会不完整且很烂]
- toplinesoftsys
100 字 AI 生成的文字,这真没什么吸引力。
我希望这是出版社的锅,作者能把它换成自己写的更体面的内容。与我听说的其他观点(包括本线程里的)相反,学习汇编在今天依然有意义,这也是我想精进的技能,所以等 $work 没那么忙乱后,我会考虑买这本书或类似的。
- Someone
一本讲汇编的书,标题起得真怪
- 针对 x64
- 在 Windows 上
- 使用 MASM
还有其他 64 位操作系统、CPU 以及对应的汇编器,而且确实有人在使用它们。