Open
Description
get_tls(CX)
MOVQ g(CX), BX; BX存器里面现在放的是当前g结构体对象的地址
#ifdef GOARCH_amd64
#define get_tls(r) MOVQ TLS, r
#define g(r) 0(r)(TLS*1)
#endif
0(r)(TLS1),这个表达式的执行逻辑是:(0+TLS+TLS)吗,这样取到的地址不是错的吗,请教下大佬这个问题
get_tls(BX) //获取fs段基址到BX寄存器
LEAQ runtime·g0(SB), CX //CX = g0的地址
MOVQ CX, g(BX) //把g0的地址保存在线程本地存储里面,也就是m0.tls[0]=&g0
接着上面的问题,为啥g(BX)取到的是m0.tls[0]
Metadata
Metadata
Assignees
Labels
No labels