ASM:Compile:Condorboard-Stable

=Compilando en Lenguaje Ensamblador (Assembly)=

Descripción
Assembly es un lenguaje de programación de bajo nivel para un procesador, microcontrolador, u otro dispositivo programable similar. En assembly cada línea de código, corresponde a una sola instrucción del procesador. Las instrucciones del procesador son especificas para una arquitectura en particular, lo que constituye la principal diferencia entre el assembly y otros lenguajes de programacion de alto nivel.

La programación en assembly se basa en el movimiento y operación de variables (valores) almacenadas en los registros del procesador y/o en memoria. Para comenzar a programar en este lenguaje es necesario conocer tanto la arquitectura como el set de instrucciones del dispositivo que se va a utilizar.

El lenguaje assembly, es la última interfaz entre un lenguaje de programación y el código de máquina. Esta transición (de assembly a código máquina) se realiza a través de un progrma llamado también ensamblador (Assembler).

Requisitos
Para iniciar la compilación de un programa en assembly, debe contar con los siguientes items ''Las siguientes indicaciones aplican para los ejemplos descritos en esta wiki y disponibles en el repositorio GIT condorboard-code (Descargar). Se recomienda al usuario tomar como base dichos ejemplos.''
 * 1) Toolchain (Ver Instalacion Herramientas de Desarrollo)
 * 2) Programa en Assembler con la funcionalidad deseada. (Ver Ejemplos)

Proceso de Compilación
Para explicar el proceso de compilación se toma como base el ejemplo ASM_GPIO_Blinking_Led (su funcionamiento se explica en la seccion ejemplos).

Dentro de la carpeta de este proyecto se encuentran los siguientes archivos:


 * program.S: Es el programa del usuario descrito en lenguaje ensamblador. Aqui se encuentran las instrucciones a ejecutar por el procesador. En la seccion Ejemplos, se describe más detalladamente su funcionamiento. La extension .S indica que es un archivo descrito en lenguaje ensamblador.
 * Makefile: Es un archivo de instrucciones para la compilacion del programa del usuario. En su interior se encuentra el conjunto de instrucciones especificas necesarias para dicha compilación. Su razón de ser es que constituye una forma generica, para realizar las llamadas a los programas encargados de la compilación mediante sencillos comandos. Dichos programas que intervienen en la compilación son:
 * arm-elf-as:Construye el codigo objeto de cada uno de los archivos assembly (.S) por separado. En este paso tambien puede ser posible compilar codigo en c (.c) y construir los respectivos archivos objetos.
 * arm-elf-ld:se linkean (resuleven dependencias (labels, direcciones, etc) ) todos los archivos objetos creados a partir del codigo fuente y se crea un unico archivo ejecutable (.elf).
 * arm-elf-objcopy: Construye el archivo binario (.bin), a partir del archivo ejecutable (.elf), que será ejecutado por el procesador.
 * main.c: Se utiliza para la descripción de rutinas en lenguaje C, llamadas desde el programa del usuario en ensamblador. No se utilizará en el presente caso.

Procedimiento Para la Compilación
Una vez se tiene un proyecto similiar al explicado, se procede a su compilación mediante la ejecución de las siguientes instrucciones:

Al final del proceso se podran observar que se generaron los siguientes archivos.


 * program.o: Archivo objeto del programa de usuario.
 * program.elf: Archivo ejecutable
 * program.bin: Archivo binario. Este es el que será enviado al procesador para su ejecución.