Changes between Version 43 and Version 44 of AS6-TME-B1


Ignore:
Timestamp:
Jan 31, 2023, 4:53:02 PM (17 months ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AS6-TME-B1

    v43 v44  
    10891089''
    10901090}}}
    1091 - Exécutez le programme en lançant le simulateur avec `make debug`.\\Cela exécute le programme pour une courte durée et cela produit deux fichiers `trace0.s` et `label0.s`.\\`trace0.s` contient la trace des instructions assembleur exécutées par le processeur. \\Ouvrez `trace.0.s` et repérez ce qui est cité ici 
    1092  - On voit la séquence des instructions exécutées
    1093  - La première colonne nous informe que les adresses lues sont dans l'espace Kernel
    1094  - La seconde colonne sont les numéros de cycles
    1095  - La troisième sont les adresses
    1096  - La quatrième le code binaire des instructions
    1097  - Le reste de la ligne contient l'instruction désassemblée
    1098  - Lorsque les adresses ont un nom, c'est à dire qu'une étiquette leur a été attribuée, celle-ci est indiquée.
    1099 
    1100  `label0.s` contient la séquence des appels de fonctions de l'exécutions. C'est en fait un extrait de la trace.\\Ouvrez le fichier `label0.s` et interprétez ce que vous voyez.
     1091- Exécutez le programme en lançant le simulateur avec `make debug`.\\Cela exécute le programme pour une courte durée et cela produit deux fichiers `trace0.s` et `label0.s`.\\ \\
     1092 - `trace0.s` contient la trace des instructions assembleur exécutées par le processeur. \\Ouvrez `trace.0.s` et repérez ce qui est cité ici 
     1093  - On voit la séquence des instructions exécutées
     1094  - La première colonne nous informe que les adresses lues sont dans l'espace Kernel
     1095  - La seconde colonne sont les numéros de cycles
     1096  - La troisième sont les adresses des instructions
     1097  - La quatrième le code binaire des instructions
     1098  - Le reste de la ligne contient l'instruction désassemblée
     1099  - Lorsque les adresses ont un nom, c'est à dire qu'une étiquette leur a été attribuée, celle-ci est indiquée.
    11011100{{{#!protected ------------------------------------------------------------------------------------
    11021101''
     
    11161115K    49:     0x80000034 0x0c000000      jal     80000000 <puts>
    11171116K    50:     0x80000038 0x24840000      addiu   a0,a0,0
    1118 }}}
     1117K    60:     <puts> ------------------------------------------------------- ./kinit.c
     1118}}}
     1119''
     1120}}}
     1121 - `label0.s` contient la séquence des appels de fonctions de l'exécutions. C'est en fait un extrait de la trace.\\Ouvrez le fichier `label0.s` et interprétez ce que vous voyez.
     1122{{{#!protected ------------------------------------------------------------------------------------
     1123''
     1124{{{#!asm
     1125K    12:     <boot> ------------------------------------------------------- ./hcpua.S
     1126K    37:     <kinit> ------------------------------------------------------ ./kinit.c
     1127K    60:     <puts> ------------------------------------------------------- ./kinit.c
     1128}}}
     1129''
     1130}}}
     1131 - Si vous ouvrez le Makefile, vous pouvez voir que le mode d'optimisation du compilateur est `O1` (regardez la définition de `CFLAGS`). Si vous demandez une optimisation en `02` ou `03`, et que vous exécutez à nouveau votre programme en mode debug, qu'observez-vous dans la trace d'exécution ?
     1132{{{#!protected ------------------------------------------------------------------------------------
     1133''
     1134- La fonction `puts` a disparue, elle a été ''inlinée'' par le compilateur ! Par conséquent, parfois pour voir le debug, il faut demander au compilateur de ne pas optimiser, mais parfois aussi en faisant ça, le bug disparait et là, on pleure...
    11191135''
    11201136}}}
     
    11321148{{{#!protected ------------------------------------------------------------------------------------
    11331149'''''''''''''''
    1134 * C'est toujours du copier-coller, l'important c'est qu'ils ouvrent le code
     1150* C'est toujours du copier-coller, mais parfois on a des surprises :-)
    11351151'''''''''''''''
    11361152}}}