NSI - TP n°17
Thème 6 :
1 import dis
Ex. 6.5. Les instructions d'un programme écrit dans un langage de haut niveau comme Python sont
2
traduites en langage machine pour être comprises par la machine. Dans EduPython, saisir :
3
dis.dis("x=1;x+=2")
On obtient - on utilise TOS (Top Of Stack cad haut de pile). Pour une pile, penser à une pile d'assiettes la dernière
donnée stockée est la 1ère sortie :
Code machine désassemblé :
0 1 (la constante 0) est copié dans la pile et devient le TOS.
0 LOAD_CONST
0 (1)
3: Le TOS est copié dans la mémoire à la case adressée par X (la variable 0).
0 (x)
3 STORE_NAME
0 (x)
6 LOAD_NAME
6 : La valeur de X (valeur la case adressée par x) est copiée dans la pile et devient le TOS.
1 (2)
2 LOAD_CONST
12 INPLACE_ADD
9 : 2 (la constante 1) est copié dans la pile et devient le TOS.
0 (x)
13 STORE_NAME
16 LOAD_CONST
2 (None)
12 : L'addition de TOS et TOS1 (avant le TOS) et le résultat devient le TOS.
19 RETURN_VALUE
13 : Le TOS est copié dans la mémoire à la case adressée par X.
16 et 19 : Finalisation - La constante None est retournée.
>>>dis.opmap['LOAD_CONST]
Chaque instruction est composée d'une opération codée en binaire bien sûr. Pour l'obtenir :
100
Soit 01100100 sur un octet.
1. Obtenir le codage binaire des opérations LOAD_CONST , << STORE_NAME et BINARY_ADD
code=""
2. Obtenir le code désassemblé du programme python contenue dans la variable code :
x=3
x<0:
y=-x
3. Expliquer le code désassemblé obtenu ligne par ligne.
else:
4. Obtenir le code binaire des nouvelles opérations.
y=x
1.
Obtain the binary encoding of the operations `LOAD_CONST`, `STORE_NAME`, and `BINARY_ADD`:
2.
Obtain the disassembled code of the Python program contained in the variable `code`:
3.
Explain the disassembled code obtained line by line:
4.
Obtain the binary code of the new operations:Not the question you are looking for? Ask here!
Enter question by text
Enter question by image
Unlock Smarter Learning with AskSia Super!
Join Super, our all-in-one AI solution that can greatly improve your learning efficiency.