Rewords and spell checking

This commit is contained in:
Yorick Barbanneau 2023-10-10 22:42:53 +02:00
parent d4d633a1bc
commit 9b629692ea

View file

@ -31,9 +31,9 @@ structures existent pour les manipuler : la pile et le tas.
### La pile
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.
Sa taille est alignées sur un *int32* ou *int64* en fonction de l'architecture
(32 ou 64 bits).
First Out*) qui croit vers le bas : plus on met de données sur la pile, plus on
descend plus les adresses diminuent. Sa taille est alignées sur un *int32* ou
*int64* en fonction de l'architecture (32 ou 64 bits).
*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
@ -66,7 +66,7 @@ suivant:
```c
int sum (int a, int b ){
return a +b;
return a + b;
}
```
@ -100,9 +100,9 @@ sum(int, int):
```
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)
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
pouvons trouver dans les langages de haut niveau (`while ...`, `if ...
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
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`**;
* les préfixes sur les registres et immédiats disparaissent : `%eax`, `$1`,
`$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">}})
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
Les registres sont de petits espace mémoire directement intégrés au processeur.
Ce sont les espace mémoires les plus rapides disponible sur un ordinateur, mais
Les registres sont de petits espaces mémoire directement intégrés au processeur.
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.
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].
[^sysv]: de `xmm0` à `xmm7` pour les flottants
[^retour_sysv] `xmm0` et `xmm1` pour les flottants
[^retour_sysv]: `xmm0` et `xmm1` pour les flottants
### Pratique