¿Cuál es la mejor manera de encontrar si el tipo de procesador es PPC o Intel en Cocoa? (¿Tengo que usar carbono?)

StackOverflow https://stackoverflow.com/questions/1619561

Pregunta

Necesito obtenerlo como una cadena para usarlo en otra parte del programa, no me preocupa la configuración del compilador.

Encontré HowToGetHardwareAndNetworkInfo en CocoaDev, pero parecía un poco intenso cuando todos yo quería saber es PPC vs. Intel.

¿Fue útil?

Solución

Si su aplicación está desarrollada (es decir, no se ejecuta bajo rosetta en Intel), no necesita hacer ninguna llamada para obtener esta información, porque se ejecutará un código diferente, dependiendo de la arquitectura que utilice. estás en . Por lo tanto, la información está disponible en tiempo de compilación:

#if defined __i386__ || defined __x86_64__
NSString *processorType = @"Intel";
#elif defined __ppc__ || defined __ppc64__
NSString *processorType = @"PPC";
#elif defined __arm__
NSString *processorType = @"ARM";
#else
NSString *processorType = @"Unknown Architecture";
#endif

Si realmente desea hacer la determinación en tiempo de ejecución por algún motivo perverso, debería poder utilizar la función sysctlbyname, definida en <sys/sysctl.h>.

Otros consejos

¿Qué tal uname?

struct utsname uts;
uname(&uts);
printf("%s\n", uts.machine);

Se imprimirá como PPC o i386 o x86_64 dependiendo de la máquina.

La única parte de ese desastre que realmente te importa está aquí:

host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount);

Vea los encabezados de Mach en Kernel.framework para estructuras y definiciones constantes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top