-
-
[求助]能否使用FS寄存器实现线程局部数据的存储
-
发表于:
2007-11-18 11:13
6089
-
比如使用FS:[38H]来存储线程的局部数据,是否会和操作系统相冲突?
下面的程序是否会有问题?
#include <stdio.h>
#include <windows.h>
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
int 线程局部数据 = -1;
__asm{
mov eax,FS:[38H] ////用od调试得知FS:[38H]的地址是7FFDE038
mov dword ptr [线程局部数据],eax
}
printf("%d\n",线程局部数据);
return 0;
}
void main()
{
int 线程局部数据 = -1;
__asm mov dword ptr FS:[38H],1 //用od调试得知FS:[38H]的地址是7FFDF038
__asm{
mov eax,FS:[38H]
mov dword ptr [线程局部数据],eax
}
printf("%d\n",线程局部数据);
//---
::CreateThread(NULL,0,ThreadProc,NULL,0,NULL);
Sleep(100);
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!