SSA大法好

在學一門語言的過程中,如果不看中間代碼和源碼怎麼能知曉這門語言調度器的調度過程呢?
今天我就來介紹一個用於看golang重點代碼的小工具

GOSSAFUNC=hello go build hello.go

例如這麼一個問題

首先我們在本地
創建一個hello.go
插入代碼

package main

import "fmt"

func main() {
	a := new(struct{})
	b := new(struct{})
	println(a, b, a == b)

	c := new(struct{})
	d := new(struct{})
	fmt.Println(c, d, c == d)
}

他的運行結果會很出乎你的意料
只能說原因和調度逃逸有關

然後在目標所在目錄敲下

GOSSAFUNC=hello go build hello.go

然後會在相應路徑出現一個 ssa.html 文件
在瀏覽器打開就可以看到它從源碼到二進制一步一步做的轉換

發佈了234 篇原創文章 · 獲贊 20 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章