这两句反编译代码什么意思?go语言局部变量返回地址发生变量逃逸

在阅读封幼麟的深度探索go语言书时在分析局部变量逃逸时,有两句汇编代码不理解,希望大佬可以帮忙解答一下。

1. 运行环境

go 1.16

2. 问题描述?

代码:
package main

func main() {
println(*newInt())
}

//go:noinline
func newInt() *int {
var a int
return &a
}
书中提供的反汇编结果:

这两句反编译代码什么意思?go语言局部变量返回地址发生变量逃逸

3. 您期望得到的结果?

铅笔字是我的分析,希望大家可以帮忙看下红字的两句汇编代码什么意思:
LEAQ 0x984c(IP),AX
MOVQ AX, 0(SP)
为什么a的地址保存在0x08(SP)中,0(SP)中保存的是什么呢?

4. 您实际得到的结果?

runtime.newobject 是 Go 运行时的一个内部函数,用于在堆上分配内存。它需要一个参数,这个参数是描述需要分配对象类型的 runtime._type 结构体指针。

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!