golang源代码中的g struct定义在哪里?
在golang源代码中,有如下代码:golang源代码中的g struct定义在哪里?,go,Go,在golang源代码中,有如下代码: MOVL (g_sched+gobuf_sp)(SI), SP // sp = m->g0->sched.sp 在运行时/stubs.go中,我找到了 func getg() *g 但是我找不到getg函数或gstruct,它在哪里?struct在哪里 你可以用它自己快速回答这样的问题 函数的注释描述了其工作原理: 编译器将对该函数的调用重写为指令 直接(从TLS或专用寄存器)获取g 要查看编译器是如何执行此操作的,请选中cmd/co
MOVL (g_sched+gobuf_sp)(SI), SP // sp = m->g0->sched.sp
在运行时/stubs.go
中,我找到了
func getg() *g
但是我找不到getg
函数或g
struct,它在哪里?struct在哪里
你可以用它自己快速回答这样的问题
函数的注释描述了其工作原理:
编译器将对该函数的调用重写为指令
直接(从TLS或专用寄存器)获取g
要查看编译器是如何执行此操作的,请选中cmd/compile/internal/gc/typecheck.go
:
这就是我想要的,谢谢
type g struct {
// Stack parameters.
// stack describes the actual stack memory: [stack.lo, stack.hi).
// stackguard0 is the stack pointer compared in the Go stack growth prologue.
if ..... && n.Left.Sym.Name == "getg" { ...