Архитектура системы - PullRequest
       12

Архитектура системы

1 голос
/ 18 ноября 2009

Как определить, работает ли в настоящее время система Mac OS X с 32-битной или 64-битной машиной?

Ответы [ 3 ]

1 голос
/ 19 ноября 2009

Это зависит от того, что вы подразумеваете под "64-битной машиной". Существуют три категории в зависимости от семейства процессоров:

  1. Поддерживает некоторые 64-битные математические операции
  2. Может запускать программы в режиме X-64 (64-битная адресация)
  3. Имеет поддержку 64-битного ядра

Я предполагаю, что вы имеете в виду смысл "2", поскольку это наиболее актуально для кода приложения. Мне кажется, вам не нужно беспокоиться о значении «1», если только вам не нужно работать на старых компьютерах PowerPC Mac.

Вы специально упомянули, что делаете это в C-коде, что на самом деле не имеет большого смысла. Если вы компилируете код на языке C, вы можете просто создать «жирное» приложение с 32- и 64-разрядными вариантами и, следовательно, выполнить проверку во время компиляции с помощью:

#if _LP64
//64-bit stuff
#else
//32-bit stuff
#endif
0 голосов
/ 19 ноября 2009

немного болтливый, но ..

#!/bin/sh

ioreg -l -p IODeviceTree | grep EFI64
if [ $? = 0 ]
then
    echo "I am a 64bit machine!"
else 
    echo "I am a 32bit machine!"
fi

завернутый в NSTask *task = [[NSTask alloc] init]; ...?

0 голосов
/ 18 ноября 2009

Я вполне уверен, что sizeof(long) == 4 в 32-битных системах и sizeof(long) == 8 в 64-битных системах. То же самое должно быть верно для указателей.

...