ما هي أفضل طريقة للعثور إذا كان نوع المعالج هو PPC أو إنتل في الكاكاو؟ (هل لديك لاستخدام الكربون؟)
-
06-07-2019 - |
سؤال
وأنا بحاجة للحصول عليه كسلسلة استخدام في أي مكان آخر في البرنامج، وأنا لست قلقا حول إعدادات مترجم.
ولقد وجدت HowToGetHardwareAndNetworkInfo على CocoaDev، ولكن يبدو شديد قليلا عند كل ما أريد أن أعرفه هو PPC مقابل إنتل.
المحلول
إذا بنيت طلبك الدهون (أي ليست قيد التشغيل تحت رشيد على إنتل)، لا تحتاج إلى إجراء أي مكالمات للحصول على هذه المعلومات، لأن <م> رمز مختلف وسوف يتم تشغيل، اعتمادا على بنية لك 'إعادة على م>. وهكذا، فإن المعلومات المتاحة في وقت الترجمة:
#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
إذا كنت تريد حقا أن تفعل تقرير في وقت التشغيل لسبب معاكس، يجب أن تكون قادرا على استخدام وظيفة sysctlbyname
المحددة في <sys/sysctl.h>
.
نصائح أخرى
وماذا عن uname
؟
struct utsname uts;
uname(&uts);
printf("%s\n", uts.machine);
هل طباعة مثل PPC أو I386 أو x86_64 اعتمادا على الجهاز.
والجزء الوحيد من تلك الفوضى التي يهمك فعلا عن هنا هو:
host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&hostInfo, &infoCount);
واطلع على رؤوس ماخ في Kernel.framework للحصول على تعريفات بنية ومستمرة.