¿Qué es 'unsigned char near'?

12

Leí una hoja de datos y encontré la variable definida como unsigned char near Sample_X . ¿Qué es esto y en qué se diferencia de unsigned char Sample_X ?

    
pregunta oppo

2 respuestas

20

El MCU especificado aquí es un Freescale MC9C08 series , que utiliza una versión ligeramente mejorada de su arquitectura HC08. Este es un núcleo de 8 bits, que (como muchos otros) tiene instrucciones más cortas y un acceso más rápido a las direcciones de "cero páginas" que otros. Las direcciones de página cero solo tienen 8 bits de longitud en lugar de 16 bits, por lo que las instrucciones que hacen referencia a ellas pueden tener 2 bytes en lugar de 3, y tomar 1 ciclo menos para ejecutar como resultado.

La palabra clave "cerca" le indica al compilador que coloque la variable en "página cero" si es posible, para un mejor rendimiento. Los compiladores específicamente escritos para el desarrollo integrado, como este , generalmente implementan dichas extensiones al lenguaje (aquí se describe como "Soporte C para la página cero ").

    
respondido por el Chromatix
15

Dependiendo de la arquitectura de la CPU, puede haber diferentes instrucciones para acceder a los datos en diferentes direcciones. Aquí hay un ejemplo de Keil para uno de sus compiladores.

El acceso cercano tiene un cierto límite de memoria, por lo que puede dar sugerencias al compilador para que coloque algunas variables de uso frecuente en un área que sea accesible mediante instrucciones más cortas (obviamente, el acceso que se describe a un espacio de direcciones de 32 bits es mayor que 16). -bit espacio de direcciones). Esto se puede traducir a un código más pequeño / más rápido.

    
respondido por el filo

Lea otras preguntas en las etiquetas