Go 语言编译的最后一个阶段是根据 SSA 中间代码生成机器码,这里谈的机器码是在目标 CPU 架构上能够运行的二进制代码,中间代码生成一节简单介绍的从抽象语法树到 SSA 中间代码的生成过程,将近 50 个生成中间代码的步骤中有一些过程严格上说是属于机器码生成阶段的。
机器码的生成过程其实是对 SSA 中间代码的降级(lower)过程,在 SSA 中间代码降级的过程中,编译器将一些值重写成了目标 CPU 架构的特定值,降级的过程处理了所有机器特定的重写规则并对代码进行了一定程度的优化;在 SSA 中间代码生成阶段的最后,Go 函数体的代码会被转换成 cmd/compile/internal/obj.Prog 结构。
2.5.1 指令集架构
首先需要介绍的就是指令集架构,虽然我们在第一节编译过程概述中曾经讲解过指令集架构,但是在这里还是需要引入更多的指令集架构知识。
![](data:image/png;base64,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)
图 2-16 计算机软硬件之间的桥梁
指令集架构是计算机的抽象模型,在很多时候也被称作架构或者计算机架构,它是计算机软件和硬件之间的接口和桥梁1;一个为特定指令集架构编写的应用程序能够运行在所有支持这种指令集架构的机器上,也就是说如果当前应用程序支持 x86 的指令集,那么就可以运行在所有使用 x86 指令集的机器上,这其实就是抽象层的作用,每一个指令集架构都定义了支持的数据结构、寄存器、管理主内存的硬件支持(例如内存一致、地址模型和虚拟内存)、支持的指令集和 IO 模型,它的引入其实就在软件和硬件之间引入了一个抽象层,让同一个二进制文件能够在不同版本的硬件上运行。
如果一个编程语言想要在所有的机器上运行,它就可以将中间代码转换成使用不同指令集架构的机器码,这可比为不同硬件单独移植要简单的太多了。
![](data:image/png;base64,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o9mk0WjQbDZwm24rbLkunufh+34nsEdRSBi1fu0YhoFpGJim1TlcJebEcGIOjuPgxB3i8QSJRIJEPI4Tj+M4MWw7hm3bmqHcwN6sVppuk0a9QdNt0mw0W7XiuXjuBdZKzCbmOMSd+FqtxEkkkiTi8dblcUe1IiI9p8AtIhft7DaC9oym7/v4vofvr/3Z8/ADfy1Eha3vWbs+tE4zZG2fZ3PtuHnbsrFjsc5H/rZtdwLT2b22Ck79481qJQhaCy/fsFaiCKJItSIifWsgl9HBNyJycdpBpv3RfDtUtYPV2QGr/ff21+vdjnFWmGoHpbMDk0JT/1KtiMhWp8AtIuvi7KBjWdY5YenVwenNbuP1/iybi2pFRLYaBW4R6QoFIjlfqhUR2ey0TFtEREREpIsUuEVEREREukiBW0RERESkixS4RURERES6SIFbRERERKSLFLhFRERERLpIgVtEREREpIsUuEVEREREukiBW0RERESkixS4RURERES6SIFbRERERKSLFLhFRERERLpIgVtEREREpIsUuEVEREREukiBW0RERESkixS4RURERES66P8HNJOix3Sinc8AAAAASUVORK5CYII=)
图 2-17 复杂指令集(CISC)和精简指令集(RISC)
最常见的指令集架构分类方法是根据指令的复杂度将其分为复杂指令集(CISC)和精简指令集(RISC),复杂指令集架构包含了很多特定的指令,但是其中的一些指令很少会被程序使用,而精简指令集只实现了经常被使用的指令,不常用的操作都会通过组合简单指令来实现。
复杂指令集的特点就是指令数目多并且复杂,每条指令的字节长度并不相等,x86 就是常见的复杂指令集处理器,它的指令长度大小范围非常广,从 1 到 15 字节不等,对于长度不固定的指令,计算机必须额外对指令进行判断,这需要付出额外的性能损失2。
而精简指令集对指令的数目和寻址方式做了精简,大大减少指令数量的同时更容易实现,指令集中的每一个指令都使用标准的字节长度、执行时间相比复杂指令集会少很多,处理器在处理指令时也可以流水执行,提高了对并行的支持。作为一种常见的精简指令集处理器,arm 使用 4 个字节作为指令的固定长度,省略了判断指令的性能损失3,精简指令集其实就是利用了我们耳熟能详的 20/80 原则,用 20% 的基础指令和它们的组合来解决问题。
最开始的计算机使用复杂指令集是因为当时计算机的性能和内存比较有限,业界需要尽可能地减少机器需要执行的指令,所以更倾向于高度编码、长度不等以及多操作数的指令。不过随着计算机性能的提升,出现了精简指令集这种牺牲代码密度换取简单实现的设计;除此之外,硬件的飞速提升还带来了更多的寄存器和更高的时钟频率,软件开发人员也不再直接接触汇编代码,而是通过编译器和汇编器生成指令,复杂的机器指令对于编译器来说很难利用,所以精简指令在这种场景下更适合。
复杂指令集和精简指令集的使用是设计上的权衡,经过这么多年的发展,两种指令集也相互借鉴和学习,与最开始刚被设计出来时已经有了较大的差别,对于软件工程师来讲,复杂的硬件设备对于我们来说已经是领域下三层的知识了,其实不太需要掌握太多,但是对指令集架构感兴趣的读者可以找一些资料开拓眼界。
2.5.2 机器码生成
机器码的生成在 Go 的编译器中主要由两部分协同工作,其中一部分是负责 SSA 中间代码降级和根据目标架构进行特定处理的 cmd/compile/internal/ssa 包,另一部分是负责生成机器码的 cmd/internal/obj4:
cmd/compile/internal/ssa 主要负责对 SSA 中间代码进行降级、执行架构特定的优化和重写并生成 cmd/compile/internal/obj.Prog 指令;
cmd/internal/obj 作为汇编器会将这些指令转换成机器码完成这次编译;
SSA 降级
SSA 降级是在中间代码生成的过程中完成的,其中将近 50 轮处理的过程中,lower 以及后面的阶段都属于 SSA 降级这一过程,这么多轮的处理会将 SSA 转换成机器特定的操作:
var passes = [...] pass {
... {
name: "lower",
fn: lower,
required: true
}, {
name: "lowered deadcode for cse",
fn: deadcode
}, // deadcode immediately before CSE avoids CSE making dead values live again
{
name: "lowered cse",
fn: cse
},
... {
name: "trim",
fn: trim
}, // remove empty blocks
}
SSA 降级执行的第一个阶段就是 lower,该阶段的入口方法是 cmd/compile/internal/ssa.lower 函数,它会将 SSA 的中间代码转换成机器特定的指令:
func lower(f * Func) {
applyRewrite(f, f.Config.lowerBlock, f.Config.lowerValue)
}
向 cmd/compile/internal/ssa.applyRewrite 传入的两个函数 lowerBlock 和 lowerValue 是在中间代码生成阶段初始化 SSA 配置时确定的,这两个函数会分别转换函数中的代码块和代码块中的值。
假设目标机器使用 x86 的架构,最终会调用 cmd/compile/internal/ssa.rewriteBlock386 和 cmd/compile/internal/ssa.rewriteValue386 两个函数,这两个函数是两个巨大的 switch 语句,前者总共有 2000 多行,后者将近 700 行,用于处理 x86 架构重写的函数总共有将近 30000 行代码,你能在 cmd/compile/internal/ssa/rewrite386.go 这里找到文件的全部内容,我们只节选其中的一段展示一下:
func rewriteValue386(v * Value) bool {
switch v.Op {
case Op386ADCL:
return rewriteValue386_Op386ADCL_0(v)
case Op386ADDL:
return rewriteValue386_Op386ADDL_0(v) || rewriteValue386_Op386ADDL_10(v) || rewriteValue386_Op386ADDL_20(v)
...
}
}
func rewriteValue386_Op386ADCL_0(v * Value) bool {
// match: (ADCL x (MOVLconst [c]) f)
// cond:
// result: (ADCLconst [c] x f)
for {
_ = v.Args[2]
x: = v.Args[0]
v_1: = v.Args[1]
if v_1.Op != Op386MOVLconst {
break
}
c: = v_1.AuxInt
f: = v.Args[2]
v.reset(Op386ADCLconst)
v.AuxInt = c
v.AddArg(x)
v.AddArg(f)
return true
}
...
}
重写的过程会将通用的 SSA 中间代码转换成目标架构特定的指令,上述的 rewriteValue386_Op386ADCL_0 函数会使用 ADCLconst 替换 ADCL 和 MOVLconst 两条指令,它能通过对指令的压缩和优化减少在目标硬件上执行所需要的时间和资源。
我们在上一节中间代码生成中已经介绍过 cmd/compile/internal/gc.compileSSA 中调用 cmd/compile/internal/gc.buildssa 的执行过程,我们在这里继续介绍 cmd/compile/internal/gc.buildssa 函数返回后的逻辑:
func compileSSA(fn * Node, worker int) {
f: = buildssa(fn, worker)
pp: = newProgs(fn, worker)
defer pp.Free()
genssa(f, pp)
pp.Flush()
}
cmd/compile/internal/gc.genssa 函数会创建一个新的 cmd/compile/internal/gc.Progs 结构并将生成的 SSA 中间代码都存入新建的结构体中,我们在上一节得到的 ssa.html 文件就包含最后生成的中间代码:
![](data:image/png;base64,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/JE1a9Zox1m8eDH5+fnExMSwZMkSHnvsMebNm8f58+cBOH/+PAsXLuTZZ5/lm2++YcaMGeTm5vLll18CpaPry5YtIy0tja1bt/LVV1/xzjvvcPr0aZYvX27TNVksFjZt2oROp7NaTKkizpw5ww8//GD1OnjwoDbCqNfradGiBfb29nz//fc2HVsphV6v58KFCxw/fhyAuLg4kpKSsLOzQymFUoo1a9awceNGvv76axYvXsznn3/O1atXmT59Ok5OTjRr1gylFLt379aOXVhYyIYNGwgNDSU0NJTLly/z0Ucf8dBDD/HNN9+wbt06HnjgAZYtW8bly5dt6veaNWvQ6XR4enpy+PBhLc3BYDDw0ksv4erqygsvvEBBQQFHjhwhJiaG7t2788QTT/wjK7rEx8fzzTff0Lt3b1q2bKl9rjdTXFzM0aNHtbr4Zfbu3UtsbCwDBw5k2bJlrF69mho1arBu3TrOnTuntTMajfz44494enqWKydqNpt566236NSpE+vXr2fu3LmsXbuWjz76CE9PT6u2H3zwAevXr2fnzp1ERkYyZ84ctmzZom13cHBg1KhRbN++XcrSCiGEuOcqHC3k5OTQrVs33n77bauAev/+/XTr1o1jx46h0+l488032bFjB7169brpcQICAli6dCkrVqzQln6vTHbv3k1aWhovvvgi3t7exMbGUlBQwLVr19i/fz8An3/+OVWrVqVnz55YLBa++OILioqK2L9/P9nZ2QB8/fXXNG/enKioKPLz8/n+++9JSkri0KFDQGnQcuXKFfr27YubmxsHDhzg7NmzLFy4kJKSEkpKSigsLCQiIgJvb2/c3Ny47777cHJysjmPODs7m59//pnOnTvfdDXSkpISPv30Uxo3bnzTnNyaNWuyceNGcnJyyM3N5fvvv7cKaEJCQqhbty5z5861qV8Avr6+NGvWjB9//BGz2cyGDRto1qyZljaSlZXFL7/8Qs2aNencuTPu7u506NCBoKAgvv/+ezIyMmjRogWenp5WD0g7d+7E0dGRTp064eDgwMqVK3FycuKRRx7RFmJ66qmniIuL0x6aKiIjI4M9e/bQu3dvevbsyaFDh7h+/bq2PSwsjKlTp3Lx4kU+++wzZs6cSWFhITNnzrzrlWD/bGaz+ZYBNZQujjR27Fg+/PBDPv74Y5o3b05AQABvvvkmAC1atODA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)
图 2-18 genssa 的执行结果
上述输出结果跟最后生成的汇编代码已经非常相似了,随后调用的 cmd/compile/internal/gc.Progs.Flush 会使用 cmd/internal/obj 包中的汇编器将 SSA 转换成汇编代码:
func(pp * Progs) Flush() {
plist: = & obj.Plist {
Firstpc: pp.Text,
Curfn: pp.curfn
}
obj.Flushplist(Ctxt, plist, pp.NewProg, myimportpath)
}
cmd/compile/internal/gc.buildssa 中的 lower 和随后的多个阶段会对 SSA 进行转换、检查和优化,生成机器特定的中间代码,接下来通过 cmd/compile/internal/gc.genssa 将代码输出到 cmd/compile/internal/gc.Progs 对象中,这也是代码进入汇编器前的最后一个步骤。
汇编器
汇编器是将汇编语言翻译为机器语言的程序,Go 语言的汇编器是基于 Plan 9 汇编器的输入类型设计的,Go 语言对于汇编语言 Plan 9 和汇编器的资料十分缺乏,网上能够找到的资料也大多都含糊不清,官方对汇编器在不同处理器架构上的实现细节也没有明确定义:
The details vary with architecture, and we apologize for the imprecision; the situation is not well-defined.5
我们在研究汇编器和汇编语言时不应该陷入细节,只需要理解汇编语言的执行逻辑就能够帮助我们快速读懂汇编代码。当我们将如下的代码编译成汇编指令时,会得到如下的内容:
$ cat hello.go
package hello
func hello(a int) int {
c: = a + 2
return c
}
$ GOOS = linux GOARCH = amd64 go tool compile - S hello.go "".hello STEXT nosplit size = 15 args = 0x10 locals = 0x0
0x0000 00000(main.go: 3) TEXT "".hello(SB), NOSPLIT, $0 - 16
0x0000 00000(main.go: 3) FUNCDATA $0, gclocals· 33 cdeccccebe80329f1fdbee7f5874cb(SB)
0x0000 00000(main.go: 3) FUNCDATA $1, gclocals· 33 cdeccccebe80329f1fdbee7f5874cb(SB)
0x0000 00000(main.go: 3) FUNCDATA $3, gclocals· 33 cdeccccebe80329f1fdbee7f5874cb(SB)
0x0000 00000(main.go: 4) PCDATA $2, $0
0x0000 00000(main.go: 4) PCDATA $0, $0
0x0000 00000(main.go: 4) MOVQ "".a + 8(SP), AX
0x0005 00005(main.go: 4) ADDQ $2, AX
0x0009 00009(main.go: 5) MOVQ AX, "".~r1 + 16(SP)
0x000e 00014(main.go: 5) RET
0x0000 48 8 b 44 24 08 48 83 c0 02 48 89 44 24 10 c3 H.D$.H...H.D$..
...
上述汇编代码都是由 cmd/internal/obj.Flushplist 这个函数生成的,该函数会调用架构特定的 Preprocess 和 Assemble 方法:
func Flushplist(ctxt * Link, plist * Plist, newprog ProgAlloc, myimportpath string) {
...
for _, s: = range text {
mkfwd(s)
linkpatch(ctxt, s, newprog)
ctxt.Arch.Preprocess(ctxt, s, newprog)
ctxt.Arch.Assemble(ctxt, s, newprog)
linkpcln(ctxt, s)
ctxt.populateDWARF(plist.Curfn, s, myimportpath)
}
}
Go 编译器会在最外层的主函数确定调用的 Preprocess 和 Assemble 方法,编译器在 2.1.4 中提到的 cmd/compile.archInits 中根据目标硬件初始化当前架构使用的配置。
如果目标机器的架构是 x86,那么这两个函数最终会使用 cmd/internal/obj/x86.preprocess 和 cmd/internal/obj/x86.span6,作者在这里就不展开介绍这两个特别复杂的底层函数了,有兴趣的读者可以通过链接找到目标函数的位置了解预处理和汇编的处理过程,机器码的生成也都是由这两个函数组合完成的。
2.5.3 小结
机器码生成作为 Go 语言编译的最后一步,其实已经到了硬件和机器指令这一层,其中对于内存、寄存器的处理非常复杂并且难以阅读,想要真正掌握这里的处理的步骤和原理还是需要耗费很多精力。
作为软件工程师,如果不是 Go 语言编译器的开发者或者需要经常处理汇编语言和机器指令,掌握这些知识的投资回报率实在太低,我们只需要对这个过程有所了解,补全知识上的盲点,在遇到问题时能够快速定位即可。