Asksia AI LOGO

Sia

haosheng52877's Question
Computer Science
Posted 5 months ago

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
Sign in to unlock the answer
Answer from Sia
Posted 5 months ago
The image you uploaded contains an explanation of how high-level programming instructions in Python are translated into machine code, along with some code snippets. Let's break down the key points and answer the questions based on the provided text.
Understanding the Disassembled Code
LOAD_CONST: This operation loads a constant value onto the stack. For example, `LOAD_CONST 1` loads the constant `1` onto the stack
STORE_NAME: This operation stores the top of the stack (TOS) into a variable. For example, `STORE_NAME x` stores the TOS into the variable `x`
INPLACE_ADD: This operation adds the TOS and the second item on the stack (TOS1) and replaces them with the result
RETURN_VALUE: This operation returns the TOS as the result of the function
Now, let's address the specific questions:


1. 
Obtain the binary encoding of the operations `LOAD_CONST`, `STORE_NAME`, and `BINARY_ADD`:
The binary encoding for these operations can be found in the "dis" module's "opmap" dictionary. For example:
python


2. 
Obtain the disassembled code of the Python program contained in the variable `code`:
To disassemble the code, you can use the "dis" module as follows:
python


3. 
Explain the disassembled code obtained line by line:
The disassembled code will show the sequence of operations performed by the Python interpreter. Each line will correspond to an operation like "LOAD_CONST", "STORE_NAME", etc., and will show how variables are manipulated.


4. 
Obtain the binary code of the new operations:
Similar to the first question, you can use the "dis" module's "opmap" dictionary to find the binary encoding of any new operations. For example:
python
I hope this helps you understand the disassembly process and the binary encoding of Python 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.

30% higher accuracy than GPT-4o
Entire learning journey support
The most student-friendly features
Study Other Question