1
Fork 0

Release 0.1

This commit is contained in:
lordwektabyte 2022-11-11 22:21:30 +01:00
commit 590932ca3b
3 changed files with 93 additions and 0 deletions

View File

@ -0,0 +1,38 @@
# Compilació Assemblador
## Assemblatge codi font
Tenim un fitxer font `source.asm` i obtenim el fitxer objecte `source.o`.
```bash
yasm -f elf64 -g dwarf2 "source.asm"
```
!!! output
Codi objecte de l'assemblador `source.o`.
## Generar executable d'assemblador
Compilem el fitxer `source.o` i obtenim l'executable `output`.
```bash
gcc --no-pie -o "output" "source.o"
```
!!! output
Fitxer executable `output`.
## Compilar codi font en C i Assemblador
Primer generem `source.o` i després el compilem amb `source.c` i obtenim l'executable `output`.
```bash
yasm -f elf64 -g dwarf2 "source.asm"
gcc --no-pie -o "output" -g "source.o" "source.c"
```
!!! info
Podem afegir tants fitxers `.o` i `.c` a compilar com necessitem per a generar l'executable del nostre programa.

View File

@ -0,0 +1,52 @@
# Depuració amb Kdbg
## Depurar programa
```bash
kdbg ./executable
```
## Valors de variables i registres
Podem veure el contingut de les variables, adreces de memòria i registres afegint _watches_ durant l'execució pas a pas d'un programa.
### Contingut d'una variable
`(mida) nom_variable`
!!! example "Exemple"
`(char)`, `(char[8])`, `(short[4])`, `(int[2])`, `(long)`
### Adreça d'una variable (i contingut)
`&nom_variable`
### Contingut d'un registre de 64 bits:
`$nom_registre`
Per a veure només una part dels registres r8-r15 cal utilitzar un sufix segons el què volguem recuperar:
- `l`: 1 byte menys significatiu
- `w` (word): 2 bytes menys significatius
- `d` (double) 4 bytes menys significatius
Per als registres `rax`, `rbx`, `rcx` i `rdx` podem utilitzar:
- `al`, `bl`, `cl`, `dl`, : primer byte menys significatiu
- `ah`, `bh`, `ch`, `dh`, : segon byte menys significatiu
Per als registres `rsi`, `rdi` i `rbp` podem utilitzar:
- `sil`, `dil`, `bpl`, : primer byte menys significatiu
!!! example "Exemple"
- `$al` primer byte menys significatiu de `rax`
- `$ah` segon byte menys significatiu de `rax`
- `$ax` valor dels 2 bytes menys significatius de `rax`
- `$eax` valor dels 4 byte menys significatiu de `rax`
- `$rax` valor del `rax` sencer (8 bytes)
- `$r8l` 1 byte menys significatiu de `r8`
- `$r8d` 4 bytes menys significatius de `r8`

View File

@ -40,3 +40,6 @@ markdown_extensions:
nav:
- Inici: index.md
- Cheatsheets:
- Compilació Assemblador: cheatsheets/compilacio-assemblador.md
- Depuració amb Kdbg: cheatsheets/depuracio-amb-kdbg.md