#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
typedef struct _cpu_basic_info {
char vendorid[13];
} cpu_basic_info;
int main() {
cpu_basic_info* info = calloc(1, sizeof(cpu_basic_info));
__asm
{
mov eax, 00h
cpuid
mov esi, info
mov dword ptr[esi].vendorid, ebx
mov dword ptr[esi].vendorid + 4, edx
mov dword ptr[esi].vendorid + 8, ecx
};
printf("%s\n", info->vendorid);
free(info);
getchar();
return 0;
}
non me lo compila, Compilatore GCC 11.2.0Chi per caso ne fosse interessato, trova un esempio di codice sotto spoiler
Non te lo compila perché la sintassi asm è di MSVC, dovresti compilare con Visual Studio (o comunque con il compilatore Microsoft).non me lo compila, Compilatore GCC 11.2.0
da 5 errori,
In function 'main':
14|error: expected '(' before '{' token
15|error: unknown type name 'mov'|
15|error: invalid suffix "h" on integer constant|
15|error: expected identifier or '(' before numeric constant|
30|error: expected declaration or statement at end of input|
|=== Build failed: 5 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
magari posta lo zip direttamente del file, forse il copia-incolla si porta dietro robaccia, caratteri invisibili ecc.
ahi ahi ahi!la sintassi asm è di MSVC
l'architettura è x86_64 per entrambi, è per questo motivo che Windows, linux e programmi vari funzionano su entrambe le CPU, a parte qualche differenza in prestazioni dipendenti dall'ottimizzazione softwareSe qualcosa è scritto solo per Intel non si può eseguire su AMD?
ok, però se parliamo di kernel del SO?
ok
se un kernel non supporta un' architettura non può andare ovviamente nemmeno su una VM?
per fare un esempio estremo, i SO Apple non possono essere eseguiti su AMD
(a prescindere dal discorso che devono essere installati sui loro device)
come discorso estremo