Qual é a melhor maneira de descobrir se o tipo de processador é PPC ou Intel em Cocoa? (Eu tenho que usar de carbono?)

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

Pergunta

Eu preciso para obtê-lo como uma string para usar em outras partes do programa, eu não estou preocupado com configurações do compilador.

HowToGetHardwareAndNetworkInfo em CocoaDev, mas parecia um pouco intenso quando tudo que eu queria saber é PPC vs Intel.

Foi útil?

Solução

Se o seu aplicativo é construído de gordura (ou seja, não está funcionando sob rosetta em Intel), você não precisa fazer quaisquer chamadas para obter essa informação, porque código diferente será executado, dependendo de qual arquitetura você 're on . Assim, a informação está disponível em tempo de compilação:

#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

Se você realmente quer fazer a determinação em tempo de execução por algum motivo perverso, você deve ser capaz de usar a função sysctlbyname, definido no <sys/sysctl.h>.

Outras dicas

Como cerca uname?

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

Será imprimir como PPC ou i386 ou x86_64 dependendo da máquina.

A única parte que bagunça que você realmente se preocupam com é aqui:

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

Veja os cabeçalhos Mach em Kernel.framework para definições de struct e constantes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top