This repo contains information, small examples, build scripts to support the aspiring learner in his undertaking of understanding arm v8 assembly.
You need docker, gdb-multiarch
and make
installed.
install via
apt install -y make gdb-multiarch
and docker, if not already installed:
curl -fsSL https://get.docker.com | sh
This repository contains a script to get everything setup properly.
Run ./config.sh
to get started.
To compile everything
make
this will use an image called qemu
, which will be created using the config script
This configuration can be used for remote debugging. Put it in .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach Debug to Qemu",
"type": "gdb",
"request": "attach",
"gdbpath": "/usr/bin/gdb-multiarch",
"executable": "${workspaceFolder}/target/kernel.elf",
"target": "localhost:8887",
"remote": true,
"cwd": "${workspaceRoot}",
"valuesFormatting": "parseText",
"preLaunchTask": "launch",
"postDebugTask": "stop"
}
]
}
additionally, we also need a tasks.json
as well
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command" : "make"
},
{
"label": "launch",
"dependsOn" : "build",
"command" : "./launch.sh"
},
{
"label": "stop",
"command" : "./stop.sh"
}
]
}
NOTE: This repo already contains these scripts.
To debug the main assembly file ( main.s
) you should have Native Debug
for Visual Code installed. Pressing F5 will build the program, and start qemu with a gdb server run.
Ending the debug session will clean up the running container.
Visual Code does not have a register or memory view yet. However it is possible to obtain information from the registers by typing info registers
in the debug console during a debug sessions.
Date (DD/MM/YYYY) | Description |
---|---|
14/11/2010 | Split development to two branches: master-armv8 for aarch64master-armv7 for arm-v7 / arm32 developmentQemu will use cortex-a57 and cortex-a15 for aarch64 and arm32 respectively |