<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY id=role_body style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Arial" 
bottomMargin=7 leftMargin=7 topMargin=7 rightMargin=7><FONT id=role_document 
face=Arial color=#000000 size=2>
<DIV>Bonjour,</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp; Dans l'article concernant les interruptions matérielles et les 
exceptions, j'ai remarqué que vous empiliez les registres.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;Pourquoi empilez-vous les registres lors de l'appel 
des interruptions ?</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;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&nbsp; 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&nbsp;restaurer la pile (POP BP) et de réaliser 
un&nbsp;(IRET) pour dépiler le registre (EFLAGS) sans oublier d'envoyer un ACK 
au PIC concerné.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Voilà à quoi ressemblait la fin de la procédure pour la souris:</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;Out(MASTER_PORT_A, 0x20);<BR>&nbsp;Out(SLAVE_PORT_A, 0x20); </DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;__asm__ ("mov %ebp, %esp");<BR>&nbsp;__asm__ ("pop 
%ebp");<BR>&nbsp;__asm__ ("iret");</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;Alors pourquoi empiler les registres ?</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;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 ?</DIV>
<DIV>&nbsp;</DIV>
<DIV>Krys.</DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV></FONT></BODY></HTML>