arm_empezar
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_empezar [2020/05/06 21:45] – andrew | arm_empezar [2020/05/20 22:09] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 8: | Línea 8: | ||
Descomprimir en la carpeta elegida. | Descomprimir en la carpeta elegida. | ||
- | Para más detalles sobre el proceso de instalación y configuración del emulador ver el articulo[[arm_qemu|Qemu: | + | Para más detalles sobre el proceso de instalación y configuración del emulador ver el artículo |
==== Debugueando un programa en ARM Assembler ==== | ==== Debugueando un programa en ARM Assembler ==== | ||
+ | Abrir la terminal del sistema Raspbian. | ||
+ | * Crear un archivo con el editor de textos nano: nano hello.s | ||
+ | * Pegar el siguiente código: | ||
+ | .data @ indica que comienza la declaración de variables | ||
+ | dato1: | ||
+ | dato2: | ||
+ | var4: .word 0xB12A | ||
+ | | ||
+ | .text | ||
+ | .global main @ visible en todo el programa (modificador de alcance) | ||
+ | | ||
+ | main: | ||
+ | mov r1, #4 | ||
+ | mov r0, #5 | ||
+ | add r2, r1,r0 @suma r2=r1+r0 | ||
+ | | ||
+ | mov r7, #1 | ||
+ | swi 0 @ si R7=1 swi sabe que deber salir a sistema operativo | ||
+ | |||
+ | * Guardar y salir de nano (Ctrl+X, el programa pregunta si quiere guardar) | ||
+ | * Compilar con la opción -g para generar debugging info | ||
+ | |||
+ | as hello.s -o hello.o -g | ||
+ | |||
+ | * Linkear el código objeto hello.o y obtener el ejecutable hello | ||
+ | gcc hello.o -o hello | ||
+ | |||
+ | * Iniciar el debugger | ||
+ | gdb -tui hello | ||
+ | |||
+ | * Poner un breakpoint inicial en una etiqueta: | ||
+ | b main | ||
+ | |||
+ | * Poner un breakpoint inicial en un número de linea: | ||
+ | b <numero de linea> | ||
+ | |||
+ | * Ejecutar el programa (que avanzará hasta el breakpoint indicado anteriormente) | ||
+ | run | ||
+ | |||
+ | * Mostrar los registros | ||
+ | layout reg | ||
+ | |||
+ | * Avanzar un paso en la ejecución del código | ||
+ | s | ||
+ | |||
+ | * Examinar el contenido de un string asciiz en memoria | ||
+ | x/s &texto | ||
+ | |||
+ | * Examinar el contenido de un word en memoria (en hexadecimal) | ||
+ | x/xw &var4 | ||
+ | |||
+ | info registers r1 r2 r3 (muestra r1, r2 y r3) | ||
+ | i r (muestra todos los registros) | ||
+ | i r cpsr (muestra el registro de flags) | ||
+ | | ||
+ | print (int) var1 (muestra el contenido de la etiqueta var en memoria ram) | ||
+ | p (int) var2 | ||
+ | | ||
+ | Si tenemos definido en memoria por ejemplo una etiqueta que se llama: | ||
+ | | ||
+ | mivector: .word 12, 14, 16 | ||
+ | | ||
+ | y deseamos ver todo el contenido de mivector | ||
+ | | ||
+ | p/x (int[3]) mivector | ||
+ | p/d (int[3]) mivector | ||
+ | p (int[3]) mivector | ||
+ | |||
+ | |||
+ | * Puede explorar la opción de Debugging Gdb Extendido (gdb con gef) | ||
+ | https:// | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | ~~NOCACHE~~ | ||
+ | ({{counter|total}}) | ||
×
iphelper toolbox
you see this when javscript or css is not working correct
Untested
arm_empezar.1588801557.txt.gz · Última modificación: 2020/05/06 21:45 (editor externo)