通过SSA的解释执行窥探Golang编译之一角println("The answer is:":string, 42:int) return entry P:0 S:0 *ssa.Package main *ssa.Function Blocks[0] *ssa.BasicBlock Instrs[0] *ssa.Call - Call = *ssa.Builtin, println - Args = [ "Hello *ssa.Return ## SSA 解释执行 -go run.go 1 × "golang.org/x/tools/go/ssa" func runFunc(fn *ssa.Function) { fmt.Println("--- runFunc begin ---") deferfmt.Println("--- runFunc end 运行Block,返回下一个Block,如果返回nil表示结束 func runFuncBlock(fn *ssa.Function, block *ssa.BasicBlock) (nextBlock *ssa.BasicBlock) { func runFuncBlock(fn *ssa.Function, bloc for_, ins := range block.Instrs { switch0 码力 | 30 页 | 1.50 MB | 2 年前3
共 1 条
- 1













