Assembleur
Voici le cours d'ISN que l'on a eu sur l'assembleur :
La programmation de haut niveau java n'est pas directement comprise par le microprocesseur. Elle est d'abord traduite pour la Virtual Machine Java, puis ensuite traitée par le microprocesseur sous la forme d'un programme en assembleur. Un langage assembleur est, en programmation informatique, un langage de bas niveau qui représente le langage machine sous une forme lisible par un humain. Le langage machine est le seul langage qu'un processeur puisse exécuter. Or chaque famille de processeurs utilise un jeu d'instructions différent.
Traduction en assembleur d'une fonction simple :
int succ(int n)
{
return n+1 ;
}
Assembleur :
.pos 0 # stack position
prog: mrmovl
a, %eax # move long a memory to register eax
mrmovl b, %ebx #
move long b memory to register eax
addl %ebx, %eax # add long ebx
to eax. Store the value in eax
rmmovl %eax, c # move long a to
register eax to memory c
halt # STOP
# data
.align
4
.pos 100 # stack position
a: .long 0x2
b: .long
0x3
c: .long 0x0
Une pile (en anglais stack) est une structure de données fondée sur le principe « dernier arrivé, premier sorti » (ou LIFO pour Last In, First Out), ce qui veut dire que les derniers éléments ajoutés à la pile seront les premiers à être récupérés. Le fonctionnement est celui d'une pile d'assiettes : on ajoute des assiettes sur la pile, et on les récupère dans l'ordre inverse, en commençant par la dernière ajoutée. Dans l'architecture x86 32bits, le registre ESP sert à indiquer l'adresse du sommet d'une pile dans la RAM. Le sommet de la pile est en bas.