能力值:
( LV2,RANK:10 )
|
-
-
2 楼
这不就是C++吗
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
你贴出来的就是VC的代码了,还翻译什么?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
不是中间不是有用汇编写的么,我想全部弄成VC的!!比如说中间的汇编指令改成C的指令!!
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
study.
|
能力值:
( LV5,RANK:60 )
|
-
-
6 楼
我是来看楼主被围观的~
建议楼主好好查查cpuid 这个指令
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
围观楼主
能用c的话还用内嵌汇编干嘛
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
还是不懂啊,懂的帮帮忙啊,我想用这个啊!谢谢了,“第八个门”你说的cpuid这是什么意思!我真的不懂啊!郁闷中!
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
网上看了下,貌视只能这样用的哈,攻取CPU的信息只能用这个指令么。想能问下还有其它方法获取CPU的唯一标识符么?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
楼上的各位大大,不要围观偷笑呵。没学习过汇编对这些只能在汇编级别解决问题的东东是很少理解的。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
俺只围观不偷笑
不会不是问题,不知者不罪,谁都有这个阶段
如果你用了别人的成果,但是你自己也掌握了,这是学习
如果你用了别人的成果,但是你还是不会,那就是抄袭了
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
LS,说的是!
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
估计能用C/C++实现出来的比你理解的更要难。。
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
CString GetCpuId()//获取CPU唯一标识符
{
CString CPUID;
unsigned long s1,s2;
unsigned char vendor_id[]="------------";
char sel;
sel='1';
CString VernderID;
CString MyCpuID,CPUID1,CPUID2;
switch(sel)
{
case '1':
//获取CPU制造厂商名称字串,intel是"GenuineIntel",AMD是"AuthenticAMD"
__asm{
xor eax,eax
cpuid
mov dword ptr vendor_id,ebx
mov dword ptr vendor_id[+4],edx
mov dword ptr vendor_id[+8],ecx
}
VernderID.Format("%s-",vendor_id);
//eax的返回值表示CPU的系列,类型和工艺制程
//edx的返回值表示CPU的一些特性标志值
__asm{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
CPUID1.Format("%08X%08X",s1,s2);
//获取96位处理器序列号的低64位(只有低64位才是不同的),貌似就P3才有的(我获取的都是0).ecx是0-31位,edx是32-63位。
//需通过如下方式先判断是否支持处理器序列号
/*
mov eax,1
CPUID
shr edx,18
test edx,01h
jz unsupport
support
*/
__asm{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
CPUID2.Format("%08X%08X",s1,s2);
break;
//关闭处理器序列号支持,重启恢复
//rdmsr和wrmsr是特权指令,需要在ring0下才可以吧
case '2':
{
__asm{
mov ecx,119h
rdmsr
or eax,00200000h
wrmsr
}
}
AfxMessageBox("CPU id is disabled.");
break;
}
MyCpuID = CPUID1+CPUID2;
CPUID = MyCpuID;
return CPUID;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
估计是向各位把嵌入的汇编代码。翻译成c++吧
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
你需要实现的功能 C/C++无法实现
只能通过强大的汇编语言去实现
|
能力值:
( LV9,RANK:250 )
|
-
-
17 楼
CPUID必须汇编..
|
能力值:
( LV3,RANK:20 )
|
-
-
18 楼
可以不用汇编,直接把机器码写到内存中,调用取返回值,只是更加难懂。
|