Exercice 6(très optionnel) Voici un programme un peu curieux (mais court) qui permet de calculer
n’importe quelle expression écrite en notation polonaise (voir exercice 3) :
0 x000 : 3084000 20000 | irmovl 0 x200 ,% esp
0 x006 : 3086000 10000 | irmovl expr ,% esi
0 x00c : 5 0060000 0000 | boucle : mrmovl (% esi ) ,% eax
0 x012 : 5 0360400 0000 | mrmovl 4(% esi ),% ebx
0 x018 : 3082080 00000 | irmovl 8 ,% edx
0 x 01e : 6 02 6 | add l % edx ,% esi
0 x 020 : 6 20 0 | and l % eax ,% eax
0 x022 : 742 e 000000 | jne calcul
0 x027 : a038 | pushl % ebx
0 x029 : 700 c 000000 | jmp boucle
0 x02e : 6232 | calcul : andl % ebx ,% edx
0 x030 : 74 53000000 | jne stop
0 x035 : b018 | popl % ecx
0 x037 : b008 | popl % eax
0 x039 : 308 2601000 00 | irmovl 0 x1060 ,% edx # addl %ecx ,% eax
0 x 03f : 6 03 2 | add l % ebx ,% edx
0 x041 : 4028480 00000 | rmmovl %edx , op
0 x048 : | . align 4
0 x048 : 00000 000 | op: . long 0
0 x04c : a008 | pushl % eax
0 x04e : 700 c 000000 | jmp boucle
0 x053 : 10 | stop : halt
0 x100 : | . pos 0 x100
0 x100 : 0000 0000 | expr : . long 0
0 x104 : 2 a000000 | . long 42 # a
0 x108 : 00000 000 | . long 0
0 x10c : 0 f000000 | . long 15 # b
0 x110 : 00000 000 | . long 0
0 x114 : 08000 000 | . long 8 # c
0 x118 : 01000 000 | . long 1
0 x11c : 01000 000 | . long 1 # sub
0 x120 : 00000 000 | . long 0
0 x124 : 7 b3a0000 | . long 0 x3a7b # d
0 x128 : 01000 000 | . long 1
0 x12c : 02000 000 | . long 2 # and
0 x130 : 01000 000 | . long 1
0 x134 : 00000 000 | . long 0 # add
0 x138 : 01000 000 | . long 1
0 x13c : 08000 000 | . long 8 # s ignal de fin
L’expression qui termine le programme correspond à l’exemple étudié dans l’exercice 3.
1. Comment l’expression est-elle codée ?
2. Analyser ce programme en expliquant le rôle de chaque instruction (ou de chaque paire d’in-
structions qui réalise une action élémentaire).
3. Les instructions d’adresses 0x39 à 0x4b sont a priori incompréhensibles ; essayer pourtant de les
décrypter, en utilisant le simulateur et en sachant que l’instruction codée 00 (un seul octet) est
l’instruction nop (ne rien faire).
4