Release 0.1
This commit is contained in:
commit
590932ca3b
3 changed files with 93 additions and 0 deletions
38
docs/cheatsheets/compilacio-assemblador.md
Normal file
38
docs/cheatsheets/compilacio-assemblador.md
Normal 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.
|
52
docs/cheatsheets/depuracio-amb-kdbg.md
Normal file
52
docs/cheatsheets/depuracio-amb-kdbg.md
Normal 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`
|
|
@ -40,3 +40,6 @@ markdown_extensions:
|
||||||
|
|
||||||
nav:
|
nav:
|
||||||
- Inici: index.md
|
- Inici: index.md
|
||||||
|
- Cheatsheets:
|
||||||
|
- Compilació Assemblador: cheatsheets/compilacio-assemblador.md
|
||||||
|
- Depuració amb Kdbg: cheatsheets/depuracio-amb-kdbg.md
|
||||||
|
|
Loading…
Reference in a new issue