Sinon concernant l’ASM, j’ai appris le NASM dans le cadre de ma L3 Informatique.
NASM est un compilateur de code assembleur type Intel qui fait un peut tout
En L3 ont a créé un compilateur de langage dit LL (voir théorie des langage), et donc à partir d’un programme en C qui décortique une grammaire LL (lexique, syntaxique, arbre abstrait) spécifique à notre compilateur LL, qui permet de génèré un code NASM que l’on compile.
Après cette compilation on obtient des « .o » (objet) qu’il faut linker avec « ld » en mode « elf-i386 » sous Linux, et sous Windows en « PE », par exemple « i386pe ».
Puis il faut faire attention, car en fonction des systèmes/émulation il peut y avoir certaines incompatibilités dans le code ASM, surtout au niveau des interruptions, c’est pour ça qu’en C on utilise la « libc ».
A savoir, tu peux voir toute les « Emulations » possible de ton linker avec « ld -V ».
A propos des interruptions, c’est un sujet assez important, puisque nécessaire pour faire des entrées/sorties, ou même pour arrêter son programme.
Et donc tu comprendras qu’il y a plein d’interruption différentes, et que par exemple, « int 0x80 » c’est coté Linux, et « int 0x21 » c’est du côté Windows/DOS.
L’idée et qu’avant chaque interruption il faut paramétré les registre nécessaire au travail fournit par le système, par exemple sous linux « mov eax, 1 », puis « int 0x80 » pour arrêter ton programme, tu peux ajouter « mov ebx, 5 » avant ton interruption pour qu’il renvoi la valeur « 5 » (par exemple), ce qui ressemblera à ceci (programme qui s’ouvre et se ferme aussi tôt) :
| section .text
global _start
_start: ; entrée start
mov eax, 1 ; 1 est le code de SYS_EXIT
mov ebx, 5 ; valeur de retour, pour 'exit'
int 0x80 ; exit
|
Il y a différent site qui traite le sujet des interruptions, mais pour voir rapidement ce qui existe :
Concernant les cours d’ASM, mon prof de L3 les a mis en libre accès, donc si ça t’intéresse :
Petite info, dépêche-toi vite de DL tout ça avant la rentrée universitaire, parce qu’il va tous enlever et remplir à nouveau au fur à mesure de ces cours …
Bon apprentissage !