Skip to content
Branch: master
Find file History
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
ch3-01-basic.md remove extra comment sign Oct 30, 2019
ch3-02-arch.md ch3: 规划图像编号 Dec 14, 2018
ch3-03-const-and-var.md fix typo Jul 29, 2019
ch3-04-func.md fix typo Jul 29, 2019
ch3-05-control-flow.md ch3: 细节调整 Feb 21, 2019
ch3-06-func-again.md ch3.6.6: 修复函数返回值 Dec 27, 2018
ch3-07-hack-asm.md ch3: 完善内容编号 Aug 5, 2018
ch3-08-goroutine-id.md fix code snippet Jan 15, 2019
ch3-09-debug.md fmt code Dec 17, 2018
ch3-10-ext.md 规范目录编号 Aug 3, 2018
readme.md 增加草根名言 Dec 20, 2018

readme.md

第3章 Go汇编语言

能跑就行,不行加机器。——rfyiamcool & 爱学习的孙老板

跟对人,做对事。——Rhichy

Go语言中很多设计思想和工具都是传承自Plan9操作系统,Go汇编语言也是基于Plan9汇编演化而来。根据Rob Pike的介绍,大神Ken Thompson在1986年为Plan9系统编写的C语言编译器输出的汇编伪代码就是Plan9汇编的前身。所谓的Plan9汇编语言只是便于以手工方式书写该C语言编译器输出的汇编伪代码而已。

无论高级语言如何发展,作为最接近CPU的汇编语言的地位依然是无法彻底被替代的。只有通过汇编语言才能彻底挖掘CPU芯片的全部功能,因此操作系统的引导过程必须要依赖汇编语言的帮助。只有通过汇编语言才能彻底榨干CPU芯片的性能,因此很多底层的加密解密等对性能敏感的算法会考虑通过汇编语言进行性能优化。

对于每一个严肃的Gopher,Go汇编语言都是一个不可忽视的技术。因为哪怕只懂一点点汇编,也便于更好地理解计算机原理,也更容易理解Go语言中动态栈/接口等高级特性的实现原理。而且掌握了Go汇编语言之后,你将重新站在编程语言鄙视链的顶端,不用担心再被任何其它所谓的高级编程语言用户鄙视。

本章我们将以AMD64为主要开发环境,简单地探讨Go汇编语言的基础用法。

You can’t perform that action at this time.