| Paso | Comando | ΒΏQuΓ© hace? |
|---|---|---|
| 1οΈβ£ Crear archivo | nano main.s |
Crear archivo Assembly ARM64 |
| 2οΈβ£ Ensamblar | as -o main.o main.s |
Convierte .s en archivo objeto .o |
| 3οΈβ£ Enlazar | ld -o main main.o |
Genera el ejecutable |
| 4οΈβ£ Ejecutar | ./main |
Corre el programa |
| 5οΈβ£ Compilar con debug | as -g -o main.o main.s |
Genera sΓmbolos para GDB |
| 6οΈβ£ Enlazar con debug | ld -o main main.o |
Crear ejecutable con debug |
| 7οΈβ£ Abrir GDB | gdb ./main |
Iniciar depuraciΓ³n |
| 8οΈβ£ Breakpoint | break _start |
Punto de parada en inicio |
| 9οΈβ£ Ejecutar en GDB | run |
Ejecutar dentro de GDB |
| π Paso a paso | stepi |
Ejecutar instrucciΓ³n por instrucciΓ³n |
| 1οΈβ£1οΈβ£ Ver registros | info registers |
Mostrar registros ARM64 |
| 1οΈβ£2οΈβ£ Salir de GDB | quit |
Salir del depurador |
| 1οΈβ£3οΈβ£ Inicializar Git | git init |
Crear repositorio |
| 1οΈβ£4οΈβ£ Agregar archivos | git add . |
Preparar archivos para commit |
| 1οΈβ£5οΈβ£ Commit | git commit -m "ARM64 program" |
Guardar versiΓ³n |
| 1οΈβ£6οΈβ£ Subir a GitHub | git push origin main |
Subir repositorio |
En ARM64 moderno es mejor usar gcc como frontend:
| AcciΓ³n | Comando |
|---|---|
| Compilar y enlazar | gcc -g main.s -o main |
| Ejecutar | ./main |
| Debug | gdb ./main |
Ventaja:
- Maneja automΓ‘ticamente librerΓas
- MΓ‘s compatible en AWS Ubuntu
| Comando | FunciΓ³n |
|---|---|
break _start |
Breakpoint al inicio |
layout asm |
Vista Assembly |
run |
Ejecutar |
stepi |
Ejecutar una instrucciΓ³n |
nexti |
Siguiente instrucciΓ³n sin entrar |
info registers |
Ver registros |
x/10x $sp |
Ver memoria |
disassemble |
Mostrar cΓ³digo ensamblado |
arm64-project/
β
βββ main.s
βββ README.md
βββ .gitignore
.section .text
.global _start
_start:
mov x0, #0
mov x8, #93
svc #0Compilar:
gcc -g main.s -o mainnano main.s
gcc -g main.s -o main
./main
gdb ./main
git init
git add .
git commit -m "Primer programa ARM64"Editar β Compilar β Ejecutar β Debug β Subir a Git
Complemento a la misiΓ³n original ARM64 Assembly + GDB Enfocado en estudiantes AWS / Ubuntu Server / Graviton
Cuando usamos GEF (GDB Enhanced Features) dentro de tmux, el debugger:
- Redibuja toda la pantalla
- Ocupa completamente el pane
- Puede romper layouts divididos
- Hace difΓcil trabajar junto a editor o compilaciΓ³n
Esto no es un bug, es el comportamiento normal de GEF.
En lugar de abrir GEF en un pane dividido:
split-window -v "gdb ./main"Usa una ventana exclusiva.
Reemplaza tu binding de GDB por:
# Abrir GEF en ventana dedicada
bind G new-window -n GEF "gdb ./main"Ahora:
Ctrl-a G
Abre GEF en su propia ventana limpia y completa.
Para volver rΓ‘pidamente:
bind g last-windowWindow 1 β Editor + CompilaciΓ³n
Window 2 β GEF Debugger
Window 3 β Git / Logs
Nunca mezclar:
- Editor
- Compilador
- Debugger
en el mismo pane.
Edita:
nano ~/.gef.rcAgrega:
gef config context.clear_screen False
gef config context.layout "regs stack code"
gef config context.nb_lines_stack 5
gef config context.nb_lines_code 6
Esto:
- Reduce redibujado
- Hace el output mΓ‘s compacto
- Mejora comportamiento en tmux
Dentro de GEF puedes usar:
layout asmo
layout splitEsto activa el modo TUI clΓ‘sico, que funciona muy bien dentro de tmux.
- Editar
main.s Ctrl-a Cβ CompilarCtrl-a Gβ Abrir GEF en ventana dedicadabreak _startrunstepiinfo registers
β GEF siempre en ventana propia β Nunca debuggear en pane compartido β Separar compilaciΓ³n y ejecuciΓ³n β Mantener sesiones tmux persistentes en AWS β Reducir ruido visual del context
GEF funciona perfectamente en:
sudo apt install gdb
git clone https://github.com/hugsy/gef.git
echo "source ~/gef/gef.py" >> ~/.gdbinitVerificar:
gdb -qDebe mostrar banner de GEF.
GEF no estΓ‘ roto. Simplemente necesita su propio espacio.
La arquitectura correcta es:
tmux
βββ Window: Code
βββ Window: GEF
βββ Window: Git / Logs
Eso es workflow profesional.

π§
.tmux.confβ ARM64 Assembly + GEF Mission Editionπ CΓ³mo usar esta configuraciΓ³n
1οΈβ£ Crear entorno ARM64
2οΈβ£ Compilar
3οΈβ£ Ejecutar
4οΈβ£ Abrir GEF correctamente
GEF abrirΓ‘ en ventana completa dedicada.
5οΈβ£ Volver al editor
π§ ConfiguraciΓ³n recomendada para GEF
Editar:
nano ~/.gef.rcAgregar:
π Arquitectura Final Profesional
Esto es workflow real de: