Beruflich Dokumente
Kultur Dokumente
INDUSTRIALES
Optimizando el desarrollo en C
Ejemplos
Yago Torroja & Jorge Portilla
En comparaciones hay que tener cuidado con los lmites o signos de los
tipos de datos
Ej: for(unsigned char i = 0; i < 256; i++) { }
Ej: for(char i = 0; i < 200; i++) { }
UPMDIE
INDUSTRIALES Sistemas Microprocesadores 2
Mezclando C y ensamblador
La forma de hacerlo depende mucho de la herramienta
GCC: permite inlining de ensamblador (no lo vemos)
AVR Studio: Permite mezclar ficheros *.c (C) y .s (ensamblador)
UPMDIE
INDUSTRIALES Sistemas Microprocesadores 3
Mezclando C y ensamblador: Visibilidad
Para hacer las funciones de C visibles en los ficheros en ensamblador
Declarar la etiquetas en ensamblador como globales:
Declarar las variables y funciones en C como externas
Declarar la etiquetas en ensamblador como globales:
Ej:
// Fichero .s // Fichero .c
.extern c_multiply_function ...
.global asm_inc_passed_by_value_var
// Parameters passed by value (int)
asm_inc_passed_by_value_var:
inc r25
adc r24, 0
ret
UPMDIE
INDUSTRIALES Sistemas Microprocesadores 4
Mezclando C y ensamblador: Pase de parmetros
GCC utiliza un criterio estricto sobre el uso de los registros y paso de
parmetros
Uso de registros y diferencias entre el programa llamante y el llamado
UPMDIE
INDUSTRIALES Sistemas Microprocesadores 5
Optimizando desarrollo en C
Uso intensivo (pero racional) del preprocesador de C
Facilita el retargetting del cdigo
Facilita cambios futuros
Mejora la legibilidad
UPMDIE
INDUSTRIALES Sistemas Microprocesadores 6