读《Go 1.5 源码剖析》时,记录的学习笔记,特此声明。
在执行一个 go 程序时,不是一开始就调用 main.main
, 还要执行一些准备操作。
如下所示:
- 先执行如下 汇编代码
go/src/runtime/rt0_linux_amd64.s

- 根据
$runtime.rt0_go(SB)
查找到了go/src/runtime/asm_amd64.s
,如下这段代码就是要找的真正目标,正是它完成了初始化和运行时启动。

至此,由汇编对特定平台实现的引导过程就全部完成。后续内容基本上都是由 Go 代码实现的。
注: 还要执行一系列 Go 代码,之后才会执行 main.main
精彩文章,持续更新,请关注微信公众号:

网友评论