用C语言实现linux下非root用户获取系统CPU的id

本文介绍了一个使用汇编语言内联代码来获取CPUID信息的C程序。通过两次调用cpuid指令,该程序能够获取并格式化输出处理器的特征标识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    #include <stdio.h>       
    char *cpu_id(char *id)  
    {  
        //char s[30];  
        unsigned   long   s1,s2,s3,s4;    
        char   sel;     
        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);     
        sprintf(id,"%08X-%08X-%08X-%08X",s1,s2,s3,s4);  
        printf("***%s***\n",id);  
        return id;  
    }  
    int   main(int   argc,   char*   argv[])     
    {     
        char id[30];  
        cpu_id(id);  
        printf("%s\n",id);  
        return   0;     
    }     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值