c++ - temporizacion - tiempo de cpu formula
Detectando el tiempo de compilaciĆ³n de la arquitectura de la CPU (5)
Aquí hay información sobre Macros de Arquitectura Predefinida y otros tipos de macros predefinidas.
Esta pregunta pregunta dónde se definen en el código fuente de GCC.
¿Cuál es la forma más confiable de descubrir la arquitectura de la CPU al compilar el código C o C ++? Por lo que puedo decir, los diferentes compiladores tienen su propio conjunto de definiciones de preprocesador no estándar ( _M_X86
en MSVS, __i386__
, __arm__
en GCC, etc.).
¿Hay una manera estándar de detectar la arquitectura que estoy construyendo? De lo contrario, ¿existe una fuente para una lista completa de tales definiciones para varios compiladores, como un encabezado con todos los caracteres #ifdef
s?
No hay nada estándar. Brian Hook documentó un montón de estos en su "Arnes portátil de código abierto", e incluso trata de convertirlos en algo coherente y utilizable (mmm con respecto a eso). Ver el encabezado posh.h en este sitio:
Tenga en cuenta que el enlace de arriba puede requerir que ingrese algún userid / password falso debido a un ataque de DOS hace algún tiempo.
No hay un estándar entre compiladores, pero cada compilador tiende a ser bastante consistente. Puedes construir un encabezado para ti que sea algo como esto:
#if MSVC
#ifdef _M_X86
#define ARCH_X86
#endif
#endif
#if GCC
#ifdef __i386__
#define ARCH_X86
#endif
#endif
No tiene mucho sentido una lista exhaustiva, porque hay miles de compiladores pero solo 3-4 en uso generalizado (Microsoft C ++, GCC, Intel CC, ¿quizás TenDRA?). Simplemente decida qué compiladores admitirá su aplicación, liste sus #defines y actualice su encabezado según sea necesario.
Si desea descargar todas las funciones disponibles en una plataforma particular, puede ejecutar GCC como:
gcc -march=native -dM -E - </dev/null
#define __SSE3__ 1
Marcos como #define __SSE3__ 1
, #define __AES__ 1
, etc.
Si necesita una detección detallada de las características de la CPU, el mejor enfoque es enviar también un programa CPUID que emita a stdout o algún archivo "cpu_config.h" el conjunto de características admitidas por la CPU. Luego integra ese programa con su proceso de compilación.