获取CPU序列号

int   main(int   argc,   char*   argv[])  
  {  
        unsigned   long   s1,s2,s3,s4; 
        char   sel;  
        printf("Select   the   function:/n1-------Read   CPU   id./n2-------Disable   CPU   id./n");  
        sel=getchar();  
        switch(sel)  
        {  
        case   '1':  
                 asm volatile  
                 ( "movl $0x01 , %%eax ; /n/t"
                   "xorl %%edx , %%edx ;/n/t"
                   "cpuid ;/n/t"
                   "movl %%edx ,%0 ;/n/t"
                   "movl %%eax ,%1 ; /n/t"
                   :"=m"(s1),"=m"(s2)
                  );
  
                printf("%08X-%08X-",s1,s2);
 
               asm volatile  
               ("movl $0x03,%%eax ;/n/t"
                "xorl %%ecx,%%ecx ;/n/t"
                "xorl %%edx,%%edx ;/n/t"
                "cpuid ;/n/t"
                "movl %%edx,%0 ;/n/t"
                "movl %%ecx,%1 ;/n/t"
                :"=m"(s3),"=m"(s4)
               );  
               printf("%08X-%08X /n",s3,s4);  
               break;
  
     case   '2':  
                asm volatile
               ("mov $0x119,%ecx /n/t"
                "rdmsr /n/t"
                "or $0x00200000,%eax /n/t"
                 "wrmsr /n/t" 
                );  
              printf("CPU   id   is   disabled./n");  
              break;  
     }  
        return   0;
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值