Le code donné à la question précédente devrait fonctionner correctement.
Le thiscall calling convention ne diffère que dans la personne responsable de l'extraction des arguments de la pile. Sous la convention d'appel thiscall, l'appelé affiche les arguments (et en plus, le pointeur this
est passé en ecx
); sous la convention d'appel C, l'appelant affiche les arguments. Cela n'affecte pas les changements de contexte. Cependant, si vous devez vous-même changer de contexte, notez que vous devez également sauvegarder et restaurer les registres (probablement sur la pile) en plus de changer de pile. Notez, en passant, que C++ n'utilise pas toujours thiscall - il est seulement utilisé pour les méthodes avec un nombre fixe d'arguments (et à part ça, c'est un Microsoftism ... g ++ ne l'utilise pas) .
Y a-t-il une raison pour rouler les vôtres plutôt que d'utiliser setjmp/longjmp? – moonshadow