Manual del compilador microchip c18
Manual del compilador Microchip C18
1. Tipos de datos
Tipos enteros
El compilador C18 soporta los tipos de datos enteros del estándar ANSI. Los rangos de cada tipo se muestran a continuación:
Tipo char Signed char Unsigned char int Unsigned int short Unsigned short Short long Unsigned short long long Unsigned long tamaño 8 bits 8 bits 8bits 16 bits 16 bits 16 bits 16 bits 24 bits 24 bits 32 bits 32 bits Rango -128 -128 0 -32,768 0 -32,768 0 -8,388,608 0 -2,147,483,648 0 127 127 255 32,767 65,535 32,767 65,535 8,388,607 16,777,215 2,147,483,647 4,294,967,295
Tipos en punto flotante
Se admiten formatos de punto flotante double o float, basados en el estándar IEEE-754. A continuación se muestran los rangos de ambos tipos:Tipo Bits Exp. Rango float 32 bits -126 128 2–126 ≈ 1.17549435e - 38 double 32 bits -126 128 2–126 ≈ 1.17549435e - 38 2128 * (2-2–15) ≈ 6.80564693e + 38 2128 * (2-2–15) ≈ 6.80564693e +38
Almacenamiento de los datos “endianness”
El ordenamiento de los datos en una variable multi-byte se realiza en little-endian. El byte menos significativo ocupa la posición más baja.
#pragma idata test=0x0200long l=0xAABBCCDD;
Da como resultado:
Dirección Contenido
0x0200 0xDD
0x0201 0xCC
0x0202 0xBB
0x0203 0xAA
Laboratorio de Sistemas Basados en Microprocesador y Sistemas Electrónicos Digitales
2
Manual del compilador Microchip C18
2. Clases de almacenamiento
Se soportan los siguientes tipos de almacenamiento definido en el estándar ANSI: auto, extern, register, static ytypedef.
Almacenamiento overlay
Además se introduce el almacenamiento overlay, que se aplica a variables locales sólo no se aplica a parámetros de funciones, definición de funciones o variables globales. El linker MPLINK intentará superponer variables locales tipo overlay sobre las mismas posiciones de memoria para funciones que no pueden activarse a la vez. Por ejemplo:
int f (void) {overlay int x = 1; return x; } int g (void) { overlay int y = 2; return y; }
Si f y g nunca se activan juntas x e y pueden compartir la mismas posiciones de memoria. La ventaja de usar ovelays es que estas variables se sitúan estáticamente lo que significa que es necesario menos instrucciones para acceder a ellas, mientras que la cantidad de memoria requerida es menor que en el caso de haberlasdefinido directamente como static, al estar superpuestas. Una función recursiva no puede contener variables de tipo overlays. El formato por defecto para las variables locales es auto. Esto puede ser modificado explícitamente mediante los prefijos static u overlay.
Argumentos para funciones
Los parámetros para las funciones pueden ser almacenados como auto o static. Un parámetro auto se almacena enla pila software que implementa el compilador. Uno static se considera global y habilita el acceso directo generando menos código. Los parámetros static son posibles sólo si el compilador esta en modo no-extendido. Los parámetros por defecto se definen como auto.
3. Calificadores del almacenamiento
Además de los calificadores ANSI (const, volatile) el MPLAB introduce los siguientes tiposnuevos: far, near, rom y ram. A continuación se muestra la posición donde se almacena la variable asociada en función del calificador.
rom far Cualquier posición de memoria de
ram Cualquier posición de memoria de
Laboratorio de Sistemas Basados en Microprocesador y Sistemas Electrónicos Digitales
3
Manual del compilador Microchip C18
programa near Cualquier posición de memoria deprograma menor de 64 KB
datos (es el valor por defecto) En las 0x5f posiciones más bajas de memoria RAM. Se permite acceso en modo banco.
Las variables tipo RAM residen en la memoria de datos y dependiendo del calificador far/near, se supondrá que están en cualquier banco o restringidas a la posiciones más bajas de la RAM (0-0x5f) que permite el acceso en modo banco. Las variables tipo ROM...
Regístrate para leer el documento completo.