Leí una hoja de datos y encontré la variable definida como unsigned char near Sample_X
. ¿Qué es esto y en qué difiere unsigned char Sample_X
?
12
Leí una hoja de datos y encontré la variable definida como unsigned char near Sample_X
. ¿Qué es esto y en qué difiere unsigned char Sample_X
?
near
es un ejemplo de un especificador de clase de almacenamiento . Le dice al compilador algo acerca de cómo o dónde se debe asignar el almacenamiento para la variable. (Vea la respuesta de filo, más abajo, para más informaciónnear
).Respuestas:
La MCU especificada aquí es una serie Freescale MC9C08 , que utiliza una versión ligeramente mejorada de su arquitectura HC08. Este es un núcleo de 8 bits, que (como muchos de estos) 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 tienen solo 8 bits de longitud en lugar de 16 bits, por lo que las instrucciones que hacen referencia a ellas pueden ser de 2 bytes en lugar de 3 y, como resultado, tardan 1 ciclo menos en ejecutarse .
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 escritos específicamente para el desarrollo integrado, como este , generalmente implementan tales extensiones al lenguaje (aquí descrito como "Soporte C para la página cero").
fuente
register
palabra clave (para los casos en los que está realmente seguro de que es aquí donde necesita optimización), pero ¿un poco menos extremo?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 pistas al compilador para colocar algunas variables de uso frecuente en un área accesible mediante instrucciones más cortas (obviamente, describir que el acceso a un espacio de direcciones de 32 bits es mayor que la dirección de 16 bits espacio). Esto se puede traducir a un código más pequeño / más rápido.
fuente
far
ynear
apunta a la arquitectura 8086 en gran parte obsoleta. Las mismas palabras clave se usan de manera relacionada pero diferente en microcontroladores de 8 bits.