[SOS] Empiler les registres !!!!
LfvrChris at aol.com
LfvrChris at aol.com
Mer 29 Déc 13:24:38 CET 2004
Bonjour,
Dans l'article concernant les interruptions matérielles et les
exceptions, j'ai remarqué que vous empiliez les registres.
Pourquoi empilez-vous les registres lors de l'appel des interruptions ?
Cela n'est pas une obligation étant donné que le processeur réalise déjà
cette opération (chapitre 5 de la doc intel volume 3). Pour ma part, j'ai
écrit, il a quelques temps un driver souris en mode protégé ainsi qu'un driver
clavier. Je n'empilais pas les registres, la seule chose que je faisais
était de restaurer la pile (POP BP) et de réaliser un (IRET) pour dépiler le
registre (EFLAGS) sans oublier d'envoyer un ACK au PIC concerné.
Voilà à quoi ressemblait la fin de la procédure pour la souris:
Out(MASTER_PORT_A, 0x20);
Out(SLAVE_PORT_A, 0x20);
__asm__ ("mov %ebp, %esp");
__asm__ ("pop %ebp");
__asm__ ("iret");
Alors pourquoi empiler les registres ?
Dans certains codes je trouve même des instructions comme "CLI" et
"STI", pourquoi étant donnée que lors de l'appel d'une interrupt gate le
processeur réalise déjà cette opération ?
Krys.
-------------- section suivante --------------
Une pièce jointe HTML a été enlevée...
URL: http://the-doors.enix.org/pipermail/sos/attachments/20041229/261889c6/attachment.htm
Plus d'informations sur la liste de diffusion Sos