Wpis z mikrobloga

#cpp:

Mireczki, jest możliwość konwersji tego oto kodu tak, by w Visual Studio 2013 się poprawnie kompilował? Aktualnie wywala błędy przy asm i volatile, a przy zamianie na __asm - problem przy jakimś nawiasie, albo coś.


void getPSN(char *PSN)


{


int varEAX, varEBX, varECX, varEDX;


char str[9];


//%eax=1 gives most significant 32 bits in eax


_asmvolatile ("cpuid": "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (1));


sprintf(str, "%08X", varEAX); //i.e. XXXX-XXXX-xxxx-xxxx-xxxx-xxxx


sprintf(PSN, "%C%C%C%C-%C%C%C%C", str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);


//%eax=3 gives least significant 64 bits in edx and ecx [if PN is enabled]


asmvolatile_ ("cpuid": "=a" (varEAX), "=b" (varEBX), "=c" (varECX), "=d" (varEDX) : "a" (3));


sprintf(str, "%08X", varEDX); //i.e. xxxx-xxxx-XXXX-XXXX-xxxx-xxxx


sprintf(PSN, "%s-%C%C%C%C-%C%C%C%C", PSN, str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);


sprintf(str, "%08X", varECX); //i.e. xxxx-xxxx-xxxx-xxxx-XXXX-XXXX


sprintf(PSN, "%s-%C%C%C%C-%C%C%C%C", PSN, str[0], str[1], str[2], str[3], str[4], str[5], str[6], str[7]);


}


int main()


{


char PSN[30]; //24 Hex digits, 5 '-' separators, and a '\0'


getPSN(PSN);


printf("%s\n", PSN); //compare with: lshw | grep serial:


return 0;


}

  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach