arm_aspectoprog2
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
arm_aspectoprog2 [2020/05/10 22:05] – mariano | arm_aspectoprog2 [2020/05/13 03:53] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
==== Aspecto de un programa en Ensamblador ===== | ==== Aspecto de un programa en Ensamblador ===== | ||
- | **.include** para incluir un archivo fuente dentro del actual. **.global** hace visible al enlazador el símbolo que hemos definido con la etiqueta del mismo nombre. | ||
- | * // | ||
- | .equ pies, 9 /* definimos a 9 la constante pies */ | ||
- | .equ yardas, pies /3 /* calculamos las yardas = 3 */ | ||
- | .equ pulgadas, pies *12 /* calculamos pulgadas = 108 */ | ||
- | * // | ||
- | |||
- | | ||
- | mul aux, input, input | ||
- | add output, aux, #1 | ||
- | .endm | ||
- | |||
- | Esta macro se llama CuadM1 y tiene tres parámetros (input, aux y output). Si posteriormente usamos la macro de la siguiente forma: | ||
- | |||
- | | ||
- | |||
- | el ensamblador se encargará de expandir la macro, es decir, en lugar de la macro coloca: | ||
- | |||
- | mul r8, r1, r1 | ||
- | add r0, r8, #1 | ||
- | |||
- | No hay que confundir las macros con los procedimientos. Por un lado, el código de un procedimiento es único, todas las llamadas usan el mismo, mientras que el de una macro aparece (se expande) cada vez que se referencia, por lo que ocuparán más memoria. Las macros serán más rápidas en su ejecución, pues es secuencial, frente a los procedimientos, | ||
- | |||
- | ==== Ensamblar y Linkear un programa ==== | ||
- | |||
- | La traducción o ensamblado de un módulo fuente (nombreprograma.asm) se realiza con el programa Gnu Assembler, con el siguiente comando: | ||
- | |||
- | as -g -o prueba.o prueba.s | ||
- | |||
- | NOTA: tanto el comando as como el nombre del programa son sensibles a las mayúsculas. Por tanto el comando debe ir en minúsculas y el nombre como queramos, pero recomendamos minúsculas también. Las opción -o nombreprograma.o puede ir después de nombreprograma.s. | ||
- | |||
- | El as genera un fichero nombreprograma.o. | ||
- | Para linkear) hay que hacer: | ||
- | |||
- | gcc -Wall -o prueba prueba.o | ||
- | |||
- | NOTA: Nuevamente, tanto gcc como el nombre del programa deben estar en minúsculas. Este comando es muy parecido al anterior, podemos poner si queremos -o prueba detrás de prueba.o. La única diferencia es que el archivo no tiene extensión, que por otro lado es una práctica muy recomendable para ejecutables en Linux. | ||
- | |||
- | Una vez hecho ésto, ya tenemos un fichero ejecutable (nombreprograma) que podemos ejecutar o depurar con el gdb. | ||
Línea 48: | Línea 9: | ||
[[oc_raspi0|Volver]] | [[oc_raspi0|Volver]] | ||
+ | ~~NOCACHE~~ | ||
+ | ({{counter|total}}) | ||
×
iphelper toolbox
you see this when javscript or css is not working correct
Untested
arm_aspectoprog2.1589148313.txt.gz · Última modificación: 2020/05/10 22:05 (editor externo)