Función intrínseca del compilador
Mayoría de las funciones está contenida en bibliotecas, pero algunas funciones están integradas (es decir, intrínseca) para el compilador.Éstos se conocen como funciones intrínsecas o funciones intrínsecas.
Comentarios
Si una función es una función intrínseca, el código de esa función es normalmente insertan en línea, evitando la sobrecarga de una llamada de función y permitir que las instrucciones de máquina altamente eficiente ser emitidas para esa función.Una función intrínseca es a menudo más rápida que el ensamblado en línea equivalente, debido a que el optimizador tiene un conocimiento integrado de cuántas funciones intrínsecas se comportan, por lo que algunas optimizaciones pueden estar disponibles que no están disponibles cuando se utiliza el ensamblador en línea.También, el optimizador puede expandir intrínseco de forma diferente, alinear los búferes de forma diferente o hace otros ajustes en función del contexto y los argumentos de la llamada.
El uso de funciones intrínsecas afecta a la portabilidad del código, ya que las características intrínsecas que están disponibles en Visual C++ no esté disponibles si el código se compila con otros compiladores y algunas funciones intrínsecas que pueden estar disponibles para algunas arquitecturas de destino no están disponibles para todas las arquitecturas.Sin embargo, las características intrínsecas son normalmente mucho más portátiles que ensamblador en línea.Las funciones intrínsecas son necesarios en las arquitecturas de 64 bits donde no se admite el ensamblado en línea.
Algunas funciones intrínsecas, tales como __assume y __ReadWriteBarrier, proporcionar información para el compilador, que afecta al comportamiento del optimizador.
Algunas funciones intrínsecas están disponibles sólo como funciones intrínsecas y algunos están disponibles tanto en la función y las implementaciones intrínsecas.Puede indicar al compilador que utilice la aplicación intrínseca en uno de dos maneras, dependiendo de si desea permitir sólo las funciones específicas o desea habilitar todos los objetos intrínsecos.The first way is to use #pragma intrinsic(intrinsic-function-name-list).La pragma puede utilizarse para especificar un único intrínseco o varias funciones intrínsecas separadas por comas.La segunda es utilizar el /Oi (generar funciones intrínsecas) opción del compilador, que pone a disposición todos los elementos intrínsecos en una plataforma determinada.En /Oi, utilice #pragma function(intrinsic-function-name-list) para forzar una llamada de función que se utilizará en lugar de una función intrínseca.Si la documentación de la específica intrínseca observa que la rutina sólo está disponible como una función intrínseca, a continuación, se utiliza la implementación intrínseca, independientemente de si /Oi o #pragma intrinsic se especifica.En todos los casos, /Oi o #pragma intrinsic permite, pero no fuerza el optimizador utilice intrínseco.El optimizador todavía puede llamar a la función.
Algunas funciones de biblioteca estándar de c o C++ están disponibles en implementaciones intrínsecas en algunas arquitecturas.Cuando se llama a una función CRT, se utiliza la implementación intrínseca si /Oi se especifica en la línea de comandos.
Está disponible un archivo de encabezado, Intrin.h, que declara prototipos para las funciones intrínsecas.Además, algunos encabezados de Windows declaran funciones que se asignan a un compilador intrínseco.
Las siguientes secciones enumeran todas las funciones intrínsecas que están disponibles en varias arquitecturas.Para obtener más información acerca de cómo funcionan las funciones intrínsecas en su procesador de destino concreto, consulte la documentación de referencia del fabricante.
Vea también
Referencia
Otros recursos
Referencia de código ensamblador de ARM