Bestimmen der CPU-Architektur zur Kompilierungszeit
Die Identifizierung der CPU-Architektur ist für die Codeoptimierung und hardwarespezifische Vorgänge von entscheidender Bedeutung. Allerdings verwenden verschiedene Compiler zu diesem Zweck unterschiedliche Präprozessordefinitionen, wie zum Beispiel „_M_X86“ für MSVS und „__i386__“ für GCC.
Gibt es einen Standardansatz für die Architekturerkennung?
Bedauerlicherweise gibt es keine Standardmethode zur Bestimmung der CPU-Architektur während der Kompilierung. Compiler implementieren ihre eigenen Methoden zur Darstellung dieser Informationen.
Umfassende Liste von Architekturdefinitionen
Obwohl es keine standardisierte Liste von Definitionen gibt, stehen dafür mehrere Ressourcen zur Verfügung Unterstützung bei der Identifizierung spezifischer Compiler-bezogener Definitionen:
Umfassendes Codebeispiel für Architektur Erkennung
Der folgende Codeausschnitt bietet eine umfassende Methode zur Bestimmung der CPU-Architektur während der Kompilierung und berücksichtigt dabei eine Vielzahl von Architekturen:
extern "C" { const char *getBuild() { //Get current architecture, detectx nearly every architecture. Coded by Freak #if defined(__x86_64__) || defined(_M_X64) return "x86_64"; #elif defined(i386) || defined(__i386__) || defined(__i386) || defined(_M_IX86) return "x86_32"; #elif defined(__ARM_ARCH_2__) return "ARM2"; #elif defined(__ARM_ARCH_3__) || defined(__ARM_ARCH_3M__) return "ARM3"; #elif defined(__ARM_ARCH_4T__) || defined(__TARGET_ARM_4T) return "ARM4T"; #elif defined(__ARM_ARCH_5_) || defined(__ARM_ARCH_5E_) return "ARM5" #elif defined(__ARM_ARCH_6T2_) || defined(__ARM_ARCH_6T2_) return "ARM6T2"; #elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) return "ARM6"; #elif defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) return "ARM7"; #elif defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) return "ARM7A"; #elif defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) return "ARM7R"; #elif defined(__ARM_ARCH_7M__) return "ARM7M"; #elif defined(__ARM_ARCH_7S__) return "ARM7S"; #elif defined(__aarch64__) || defined(_M_ARM64) return "ARM64"; #elif defined(mips) || defined(__mips__) || defined(__mips) return "MIPS"; #elif defined(__sh__) return "SUPERH"; #elif defined(__powerpc) || defined(__powerpc__) || defined(__powerpc64__) || defined(__POWERPC__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) return "POWERPC"; #elif defined(__PPC64__) || defined(__ppc64__) || defined(_ARCH_PPC64) return "POWERPC64"; #elif defined(__sparc__) || defined(__sparc) return "SPARC"; #elif defined(__m68k__) return "M68K"; #else return "UNKNOWN"; #endif } }
Das obige ist der detaillierte Inhalt vonWie kann ich die CPU-Architektur zur Kompilierungszeit erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!