golang源代码中的g struct定义在哪里?

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

在golang源代码中,有如下代码:

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" { ...