Allocation minimale après le prologue de main. |___________________| Local de main sp main a -->|main var/tmp4 t | . fp_main - 44 |___________________| . |main var/tmp3 pg | . fp_main - 40 |___________________| . |main var/tmp2 diff | . fp_main - 36 |___________________| . |main var/tmp3 somme| . fp_main - 32 |___________________| . |main sauv r7 | . fp_main - 28 |___________________| . |main sauv r6 | . fp_main - 24 |___________________| . |main sauv r5 | . fp_main - 20 |___________________| . |main sauv r4 | . fp_pain - 16 |___________________| . Bloc param crt -> main |ancien fp (de crt) | . fp_main - 12 |___________________|---- ----|ancien sp (de crt) | . | fp_main - 8 | |___________________| . | | |@sse ret (dans crt)| | | fp main - 4 . |___________________| | | . |main (debut corps)|<---- fp_main | |___________________| | sp crt ------>| | | . Situation au début du prologue de calcul |___________________| sp main ----->|calcul par4 (np) | ^ Bloc params main -> calcul |___________________| | rempli avant l'appel de calcul sp main + 4 |calcul par5 (n) | | peut être libéré dès retour de calcul |___________________| | sp main + 8 |calcul par6 (3max) | | |___________________| v Bloc local de main ^ |main var/tmp4 t | | |___________________| | |main var/tmp3 pg | | |___________________| | |main var/tmp2 diff | | |___________________| | |main var/tmp3 somme| | |___________________| | |main sauv r7 | | |___________________| | |main sauv r6 | | |___________________| | |main sauv r5 | | |___________________| | |main sauv r4 | | |___________________| | |ancien fp (de crt) | | |___________________| | |ancien sp (de crt) | | |___________________| | |@sse ret (dans crt)| | |___________________| | |main (debut corps)|<---- fp_main v |___________________| | | Le bloc de paramètres peut être libéré dès la récupération du résultat de npgd (si allocation/libération à chaque appel) --> retour à la situation précédente. Allocation minimale dans le prologue de calcul |___________________| . Bloc local de calcul |calcul var/tmp1 m | . fp_calc - 44 |___________________| . |calcul sauv r9 | . fp_calc - 40 |___________________| . |calcul sauv r6 | . fp_calc - 36 |___________________| . |calcul sauv r5 | . fp_calc - 32 |___________________| . |calcul sauv r3 | . fp_calc - 28 |___________________| . |calcul sauv r2 | . fp_calc - 24 |___________________| . |calcul sauv r1 ul | . fp_calc - 20 |___________________| . |calcul sauv r0 | . fp_calc - 16 |___________________| . Bloc param main -> calcul |ancien fp (de main)| | fp_calc - 12 |___________________|-- | |ancien sp (de main)| | | fp_calc - 8 |___________________| . | |@sse ret dans main | . | fp_calc - 4 |___________________| . | |calcul(debut corps)|<---- fp_calc |___________________| . |calcul par4 (np) | . fp_calc + 4 |___________________| . |calcul par5 (n) | . fp_calc + 8 |___________________| . |calcul par6 (3max) | . fp_calc + 12 |___________________| . Le bloc de paramètres calcul -> npgcd est rempli juste avant l'appel de npgcd Il est alloué juste avant l'appel ou dans le prologue (max des tailles d'appel) |___________________| sp calcul ----->|npgcd par4 (max) | |___________________| Bloc local de calcul |calcul var/tmp1 m | . fp_calc - 44 |___________________| . |calcul sauv r9 | . fp_calc - 40 |___________________| . |calcul sauv r6 | . fp_calc - 36 |___________________| . |calcul sauv r5 | . fp_calc - 32 |___________________| . |calcul sauv r3 | . fp_calc - 28 |___________________| . |calcul sauv r2 | . fp_calc - 24 |___________________| . |calcul sauv r1 ul | . fp_calc - 20 |___________________| . |calcul sauv r0 | . fp_calc - 16 |___________________| . Bloc param main -> calcul |ancien fp (de main)| | fp_calc - 12 |___________________|-- | |ancien sp (de main)| | | fp_calc - 8 |___________________| . | |@sse ret dans main | . | fp_calc - 4 |___________________| . | |calcul(debut corps)|<---- fp_calc |___________________| . |calcul par4 (np) | . fp_calc + 4 |___________________| . |calcul par5 (n) | . fp_calc + 8 |___________________| . calcul par6 (3max) | . fp_calc + 12 |___________________| . Si libération dès que possible, retour à la situation précédente dès retour de npgcd