Langage machine

Assembler le code machine

Ecrire le programme suivant en Python


import dis
dis.dis('x = 2;x = x + 3')

Un programme Python est traduit en langage machine pour être exécuté

Chaque instruction contient un code que le processeur peut décoder ce qui permet ensuite au processeur d'exécuter une tâche bien précise

Avant de voir les codes machines correspondants aux deux instructions précédentes nous allons voir les codes sous forme compréhensible (le langage assembleur)

Pour deux instructions (deux affectations) en assembleur il y a 7 actions

Chaque action par exemple LOAD_CONSTANT a un sens bien précis défini dans la documentation Python

Un élément important la pile (stack) permet de simplifier la gestion des opérations

Voici comment est effectué l'addition

A partir de ces éléments on peut décoder le code assembleur:

Chaque action a 2 octets, un octet pour le code opératoire (opcode) par exemple LOAD_CONST, puis un octet pour l'adresse mémoire (ou pas)

Si on veut désassembler le code assembleur LOAD_CONST et obtenir le code machine correspondant on utilise le dictionnaire opmap ainsi

Ainsi LOAD_CONST 0 est traduit par 0x64 0x00

Exercice

Finir la traduction

Que donnera en langage assembleur et en langage machine les instructions suivantes ?


x = 2
y = 3
z = x + y