Le 03/02/2023 à 10:23, Pascal06 a écrit :
> Le 02/02/2023 à 23:48, JKB a écrit :
>> Bonsoir,
>>
>> Pas sûr que je comprenne la demande. Si c'est pour un code
>> s'exécutant sur une machine standard, il faut voir les sections du
>> binaires (.data par exemple, ou .text). Le code source ne donnera
>> pas grand'chose parce que le compilateur peut optimiser des tas de
>> choses (alignement mémoire entre autre, champs de bits...).
> Pascal
Bonjour à toutes et tous,
je reviens sur ce messages, car depuis j'ai trouvé des éléments de
réponses.
Il existe donc deux outils qui permettent d'analyser les fichiers map
générés par le compilateur gcc:
https://github.com/govind-mukundan/MapViewer
https://www.sikorskiy.net/info/prj/amap/
Malheureusement, ces outils ne fonctionnent pas avec le code que je
voulais analyser et qui est compilé avec XC8 de Microchip: celui-ci
n'étant pas basé sur GCC (contrairement à XC16).
Par contre,
dans le code assembleur qui est généré (fichier .lst), il est indiqué
en commentaire la taille de chacune des variables utilisées, par exemple:
1642 ;; *************** function _main *****************
1643 ;; Defined at:
1644 ;; line 112 in file "main.c"
1645 ;; Parameters: Size Location Type
1646 ;; None
1647 ;; Auto vars: Size Location Type
1648 ;; sgOld 4 63[BANK0 ] unsigned long
1649 ;; spOld 4 59[BANK0 ] unsigned long
1650 ;; sg 4 0 unsigned long
1651 ;; sp 4 0 unsigned long
1652 ;; drvConfig 2 67[BANK0 ] struct .
1653 ;; adcRawValue 2 0 unsigned short
1654 ;; msdiStatus 1 0 enum E3961
1655 ;; i 1 0 unsigned char
1656 ;; Return value: Size Location Type
1657 ;; 2 313[None ] int
1658 ;; Registers used:
1659 ;; wreg, fsr0l, fsr0h, fsr1l, fsr1h, status,2, status,0, pclath,
cstack
Ce qui correspond donc tout à fait à ce que je cherchais. On voit par
exemple que sgOld prend 4 octets, que c'est un unsigned long ( =
uint32_t), qu'il utilise le bank0.
Le micro 8 bits utilisé est une PIC16F15244
Ce fichier lst est placé dans le dossier /dist/default du projet.
Si ça peut aider d'autre personnes ;)
Pascal