[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