Rewords and spell checking
This commit is contained in:
parent
d4d633a1bc
commit
9b629692ea
1 changed files with 11 additions and 11 deletions
|
@ -31,9 +31,9 @@ structures existent pour les manipuler : la pile et le tas.
|
||||||
### La pile
|
### La pile
|
||||||
|
|
||||||
Elle manipule des données statiques. C'est une structure de type LIFO (*Last In
|
Elle manipule des données statiques. C'est une structure de type LIFO (*Last In
|
||||||
First Out) qui croit vers le bas : plus on descend plus les adresse augmentent.
|
First Out*) qui croit vers le bas : plus on met de données sur la pile, plus on
|
||||||
Sa taille est alignées sur un *int32* ou *int64* en fonction de l'architecture
|
descend plus les adresses diminuent. Sa taille est alignées sur un *int32* ou
|
||||||
(32 ou 64 bits).
|
*int64* en fonction de l'architecture (32 ou 64 bits).
|
||||||
|
|
||||||
*Deux "fonctions"* permettent de la manipuler : `push()` afin de placer un
|
*Deux "fonctions"* permettent de la manipuler : `push()` afin de placer un
|
||||||
élément -- la pile descend alors d'une case -- et `pop()` pour reprendre un
|
élément -- la pile descend alors d'une case -- et `pop()` pour reprendre un
|
||||||
|
@ -100,9 +100,9 @@ sum(int, int):
|
||||||
```
|
```
|
||||||
|
|
||||||
On parle alors d'ISA pour *Instruction Set Architecture*, cela représente le jeu
|
On parle alors d'ISA pour *Instruction Set Architecture*, cela représente le jeu
|
||||||
d'instruction disponible. Nous y trouvons les opérations élémentaires :
|
d'instructions disponible. Nous y trouvons les opérations élémentaires :
|
||||||
addition, soustraction, multiplication, division, et / ou (exclusifs ou non)
|
addition, soustraction, multiplication, division, et / ou (exclusifs ou non)
|
||||||
etc. Ici mon manipule les registres et la mémoire directement. Une *ISA* ne
|
etc. On manipule les registres et la mémoire directement. Une *ISA* ne
|
||||||
contient pas d'opérateur avancés comme les structures de contrôles que nous
|
contient pas d'opérateur avancés comme les structures de contrôles que nous
|
||||||
pouvons trouver dans les langages de haut niveau (`while ...`, `if ...
|
pouvons trouver dans les langages de haut niveau (`while ...`, `if ...
|
||||||
else ...`, `for ...`).
|
else ...`, `for ...`).
|
||||||
|
@ -114,7 +114,7 @@ l'assembleur *x86_32* pour ce cours (et quelques fois sa version 64). Mais par
|
||||||
contre nous utiliserons **la syntaxe *Intel*** majoritairement utilisée dans le
|
contre nous utiliserons **la syntaxe *Intel*** majoritairement utilisée dans le
|
||||||
monde de l'ingénierie inverse. Cette syntaxe est plus simple :
|
monde de l'ingénierie inverse. Cette syntaxe est plus simple :
|
||||||
|
|
||||||
* les suffixes de mnémoniques pour n'existes pas en syntaxe Intel, ainsi
|
* les suffixes de mnémoniques n'existent pas en syntaxe Intel, ainsi
|
||||||
`movl`, `movw` ou encore `movb` deviennent **`mov`**;
|
`movl`, `movw` ou encore `movb` deviennent **`mov`**;
|
||||||
* les préfixes sur les registres et immédiats disparaissent : `%eax`, `$1`,
|
* les préfixes sur les registres et immédiats disparaissent : `%eax`, `$1`,
|
||||||
`$0x0ff` deviennent **`eax`, `1` et `0x0ff`**;
|
`$0x0ff` deviennent **`eax`, `1` et `0x0ff`**;
|
||||||
|
@ -125,12 +125,12 @@ monde de l'ingénierie inverse. Cette syntaxe est plus simple :
|
||||||
sécurité logicielle]({{<ref "secu_logicielle/4_acces_memoire/index.md#accès-indirects-à-la-mémoire">}})
|
sécurité logicielle]({{<ref "secu_logicielle/4_acces_memoire/index.md#accès-indirects-à-la-mémoire">}})
|
||||||
|
|
||||||
Le vocabulaire reste le même que celui vu lors des cours [d'introduction de
|
Le vocabulaire reste le même que celui vu lors des cours [d'introduction de
|
||||||
sécurité logicielle]({{ref "secu_logicielle/1_introduction/index.md"}})
|
sécurité logicielle]({{<ref "secu_logicielle/1_introduction/index.md">}})
|
||||||
|
|
||||||
### L'assembleur x86 : les registres
|
### L'assembleur x86 : les registres
|
||||||
|
|
||||||
Les registres sont de petits espace mémoire directement intégrés au processeur.
|
Les registres sont de petits espaces mémoire directement intégrés au processeur.
|
||||||
Ce sont les espace mémoires les plus rapides disponible sur un ordinateur, mais
|
Ce sont les espaces mémoire les plus rapides disponible sur un ordinateur, mais
|
||||||
aussi les plus petits. Il sont dédiés entre autres au stockage de données.
|
aussi les plus petits. Il sont dédiés entre autres au stockage de données.
|
||||||
|
|
||||||
Certains de ces registres ont des **rôles bien déterminés** par exemples :
|
Certains de ces registres ont des **rôles bien déterminés** par exemples :
|
||||||
|
@ -375,7 +375,7 @@ le reste sur la pile. La valeur de retour est positionnée dans `rax` pour les
|
||||||
valeurs jusqu'à 64 bits et `rax:rdx` entre 64 et 128 bits[^retour_sysv].
|
valeurs jusqu'à 64 bits et `rax:rdx` entre 64 et 128 bits[^retour_sysv].
|
||||||
|
|
||||||
[^sysv]: de `xmm0` à `xmm7` pour les flottants
|
[^sysv]: de `xmm0` à `xmm7` pour les flottants
|
||||||
[^retour_sysv] `xmm0` et `xmm1` pour les flottants
|
[^retour_sysv]: `xmm0` et `xmm1` pour les flottants
|
||||||
|
|
||||||
### Pratique
|
### Pratique
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue