Go 汇编层面的初始化

读《Go 1.5 源码剖析》时,记录的学习笔记,特此声明。

在执行一个 go 程序时,不是一开始就调用 main.main, 还要执行一些准备操作。
如下所示:

  1. 先执行如下 汇编代码 go/src/runtime/rt0_linux_amd64.s
rt0_linux_amd64.s.png
  1. 根据 $runtime.rt0_go(SB) 查找到了go/src/runtime/asm_amd64.s ,如下这段代码就是要找的真正目标,正是它完成了初始化和运行时启动。
Go 汇编层面的初始化_第1张图片
asm_amd64.s.png

至此,由汇编对特定平台实现的引导过程就全部完成。后续内容基本上都是由 Go 代码实现的。

注: 还要执行一系列 Go 代码,之后才会执行 main.main

精彩文章,持续更新,请关注微信公众号:

Go 汇编层面的初始化_第2张图片
帅哥美女扫一扫

你可能感兴趣的:(Go 汇编层面的初始化)