From e7967137c13f48aa0fd45578e3c2865161a2e640 Mon Sep 17 00:00:00 2001 From: Yorick Barbanneau Date: Thu, 2 Feb 2023 22:31:21 +0100 Subject: [PATCH] Add first part assembly language course --- content/secu_logicielle/2_assembleur/index.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/content/secu_logicielle/2_assembleur/index.md b/content/secu_logicielle/2_assembleur/index.md index 498f72c..0e43901 100644 --- a/content/secu_logicielle/2_assembleur/index.md +++ b/content/secu_logicielle/2_assembleur/index.md @@ -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