Lors d'une interruption en mode IM1 le code est executé en 38H et lors de démo on vient modifier les 2 lignes en EI et RET.
Ma question est de savoir ou es stocké l'adresse de retour et comment cela fonctionne. Comme il est possible de faire plusieurs appel par un CALL par exemple , je pense que les adresses de retour sont empilés en ram mais ou ???
L'idée étant de créer un ou des programmes "multithread" en utilisant les interruptions comme on peut le voir dans des démos. Meme si cela est lent pour moi ce n'est pas un problème, la gestion des thread devant être transparent par le thread (à part son initialisation). En empilant les valeurs des registres et en les restaurant avant appel du thread cela devrait pouvoir fonctionner.
En 38H je compte gérer une table qui aura les adresses de retour pour chaque thread avec possibilité d'affinité selon un codage dans le thread.
L'adresse de retour lors d'une interruption est stockée sur la pile, comme un call. Si par exemple SP vaut #C000 juste avant une interruption, lors de cette interruption juste avant le saut en #38, SP sera décrémenté de 2 (taille d'une adresse 16 bits) et on stockera à l'adresse #BFFE (#C000 - 2) l'adresse de retour.
De ce fait, le RET récupère l'adresse stockée dans la PILE, et incrémente SP de 2.
Comme je pousse AF sur la pile alors le RET ne pourra pas revenir après le CALL , c'est la valeur de AF qui va servir d'adresse retour ? C'est bien une pile de type LIFO ?
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum