He leído un 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
?
Respuestas
¿Demasiados anuncios?La MCU especificada aquí es una Serie MC9C08 de Freescale que utiliza una versión ligeramente mejorada de su arquitectura HC08. Se trata de un núcleo de 8 bits, que (como muchos de ellos) tiene instrucciones más cortas y un acceso más rápido a las direcciones de "página cero" que otros. Las direcciones de página cero sólo tienen 8 bits de longitud en lugar de 16 bits, por lo que las instrucciones que hacen referencia a ellas puede ser de 2 bytes en lugar de 3, y tardar 1 ciclo menos en ejecutarse como resultado.
La palabra clave "near" indica al compilador que ponga la variable en "página cero" si es posible, para mejorar el rendimiento. Compiladores escritos específicamente para el desarrollo embebido, como este , suelen implementar estas extensiones del lenguaje (aquí descritas como "C Support for Zero Page").
Dependiendo de la arquitectura de la CPU puede haber diferentes instrucciones para acceder a los datos en diferentes direcciones. A continuación se muestra un ejemplo de Keil para uno de sus compiladores.
El acceso cercano tiene un cierto límite de memoria, por lo que puede dar pistas al compilador para que coloque algunas variables de uso frecuente en un área que sea accesible mediante instrucciones más cortas (obviamente, describir el acceso a un espacio de direcciones de 32 bits es mayor que el espacio de direcciones de 16 bits). Esto puede traducirse en un código más pequeño/rápido.