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
|
||||
|
||||
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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue