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 Les commentaires sont essentiels afin de marquer les points essentiels du code
(début de test, branchement) et le rendre pus intelligible. (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 [l_vonneumann]:https://fr.wikipedia.org/wiki/Architecture_de_von_Neumann