Bonjour,
voila je suis face à une petite incomprehension, je vous montre le bout de code :
c'est en faite une fonction qui me permet de restaurer un autre contexte sauvegardé dans les deux variable (main_esp et main_ebp).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void retour() { int b; asm ("movl %0, %%esp" : :"r"(main_esp):"esp"); asm ("movl %0, %%ebp" : :"r"(main_ebp)); }
ce bout de code marche trés bien et fait ce que j'attend de lui, mais le probleme est que je suis dans l'obligation de rajouter la variable local "int b" qui sert à rien du tout dans la fonction. parceque on enlevant cette variable j'ai une erreur de segmentation.
je ne comprend rien du tout du changement apporté par cette variable local; je suis assez debutant dans l'utilisation de l'assembleur; donc un eclaircissement serait vraiment le bienvenus.
PS : pour info la fonction "retour()" est appellée par la primitive signal() lors de la capture d'un signal.
voila Merci beaucoup.
Partager