Add first part assembly language course

This commit is contained in:
Yorick Barbanneau 2023-02-02 22:31:21 +01:00
parent 895172baad
commit e7967137c1

View file

@ -87,4 +87,39 @@ C'est un langage non structuré avec des **instructions arithmétiques simples**
Les commentaires sont essentiels afin de marquer les points essentiels du code
(début de test, branchement) et le rendre pus intelligible.
### Un peu d'histoire
* 1971: *Intel* commercialise le 4004 cadencé à 740 Khz et avec 640 bits de
mémoire
* 1972: *Intel* commercialise le 8008, registres de 8bits et 800Khz de
fréquence
* 1978: *Intel* commercialise le 8086 avec des registres de 16 bits et cadancé
jusqu'à 10 Mhz.
* 1985: *Intel* commercialise le 386 aved des registres de 32 bits et 4Go de
mémoire adressable. Ce processeur introduit la mémoire virtuelle.
* 1997: *Intel* commercialise le Pentium
### Un peu de vocabulaire
Voici un code en C :
```c
t[i]++
```
Et son équivalent en assembleur :
```asm
addl1 $1, t(%eax,4)
```
* `addl` : mnémonique, ici *add long*
* `$1` est `t(%eax,4)` sont des opérandes
* `$1` est une immédiat
* `%eax` est un resgistre
* `t` est une référence, il pointe vers un endroit de la mémoire
* `4` est un multiplicateur
On peu en déduire que `t(%eax,4)` est une **adresse mémoire**.
[l_vonneumann]:https://fr.wikipedia.org/wiki/Architecture_de_von_Neumann