2.7.4 对 Go 指针检查的原理描述错误
作者: Tomahawkd创建于 2023年1月30日更新于 2023年1月30日
原文中描述如下:
减记 int * 获取 Goptr () { SIZE TYPE cgo ctxt= cgo wait runtime init done (); (中文(简体) ). 结构{ 内* r0;
- 属性(( -- 包))a; cgo tsan 放行( ); cgoexp 95d42b8e6230 get GoPtr, &a, 8, cgo ctxt; 页面存档备份,存于互联网档案馆. cgo tsan 获取(); cgo release context ( cgo ctxt); 页面存档备份,存于互联网档案馆. 返回a.r0; (中文(简体) ). {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? -=YTET -伊甸园字幕组=- 翻译: 说吧
请检查access-date=中的日期值 (帮助)
(https://GitHub.com/golang/go/blob/master/src/runtime/cgocall.go#L361) 中。 (中文(简体) ).
-=YTET -伊甸园字幕组=- 翻译:
附上反编译代码:
萨斯米
公开 cgoexp d414b5060daa getGoPtr
cgoexp d414b5060daa getGo 靠近 Ptr Proc
var 8=qword ptr-8 (中文(简体) ).
a = qword ptr 8 (中文(简体) ).
cmp rsp, [r14+10h] (中文(简体) ).
jbe 简称为 45B538
次级rsp, 18h
mov [rsp+18h+var 8], rbp (中文(简体) ).
lea rbp, [rsp+18h+var 8] (韩语).
驱动 [rsp+18h+a], rax
叶 rax, unk 4607C0
调用运行时间 newobject
mov rdi, [rsp+18h+a]; val (中文(简体) ).
测试 [rdi], al
cmp dword ptr cs:runtime write Barrier. 已启用, 0
jnz 简略 loc 45B51A
移动 [rdi], rax
jmp 短的 loc 45B51F
loc 45B51A: (英语).
调用运行时间 gcWrite Barrier
loc 45B51F: (英语).
移动 rbx, rax
取出 rax, unk 45EC00
调用运行时间 cgoCheckResult
mov rbp, [rsp+18h+var 8] (法语).
增加rsp, 18h
缩写内容来源: chai2010/advanced-go-programming-book