【发布时间】:2023-03-24 05:54:02
【问题描述】:
看了FastMM4的源码,注意到了这个有趣的功能
function GetThreadID: Cardinal;
{$ifdef 32Bit}
asm
mov eax, FS:[$24]
end;
{$else}
begin
Result := GetCurrentThreadID;
end;
{$endif}
我已经对其进行了测试,并且它有效,所以我的问题是任何解释为什么它有效?
【问题讨论】:
-
在 TEB 上还有另一个 must see link。 MS documentation 对这个主题没用。
-
相反,MS 文档非常好。由于这是私有实现,因此私有实现细节的正确文档策略是保持私有。
-
@DoctorLai,我很好奇,你为什么把用magic位移读取记忆称为“高效”?
-
@David Heffernan,有道理,但只有在这些私人细节公布之前。从什么时候开始,它就变成了记录不充分的细节。
-
@Doctor 你可以进入 winapi 调用。当然它使用 TEB。
标签: delphi x86 inline-assembly fastmm