Retourner aux forums || Retourner au forum
Programmation.autre : Assembleur: jmp $+2 (késako ?)
Posté par liberforce (Jabber id, page perso, ) le 28 mai 2007Je m'arrache les cheveux depuis un bon moment sur cette ligne d'assembleur:
jmp $+2. Ok c'est un saut, mais je ne comprends pas la syntaxe "$+2".
De même, les instructions
jz @F et les labels @@ (je suppose que jz renvoie à ce label, mais pourquoi les deux noms sont différents ? C'est un genre de label anonyme ?)
Ces instructions sont extraites de ce code, en assembleur Intel:
http://control.ee.ethz.ch/~lawrence/public-project-trac/brow(...)
Merci à ceux qui pourront me donner des pistes ou explications...
> Lire le message (3 commentaires, moyenne: 1,7).
En simple
le terme $ en assembleur designe la valeur actuel du Program Counter (PC)
jmp $+2 signifie prend la valeur actuel du PC additionne 2 et saute a cette nouvelle adresse.
Dans le code assembleur que tu donne ne lien cela ressemble fort a une temporisation entre deux acces a un peripherique plus lent que le cpu
Merde, ca fait trois fois que je le coupe il est toujours trop court!
-(un stagiaire hardware qui devait connaitre le grand pere de Sylvain Sauvage ;-) )-
-
[^]Re: En simple
Posté par Émilien Tlapale (page perso, ) le 28/05/2007 à 15:13. (lien). Évalué à 1.Le +2 étant là pour faire sauter après le jump, donc un peu comme un nop étant donné que le $ represente l'adresse du début de l'instruction courante, que jmp occupe un octet et que l'offset-argument occupe aussi un octet.
Le @@ correspond probablement à une adresse anonyme, le @F indiquant le prochain label anonyme (pour Forward), avec peut-être un @B pour sauter au label précédent.
Pas sûr du tout de ce que j'avance mais ça à l'air de coller (la syntaxe Intel çapue!).
-
[^]Re: En simple
Posté par liberforce (Jabber id, page perso, ) le 28/05/2007 à 15:30. (lien). Évalué à 2.Merci, c'est un peu ce que je pensais, mais dans ce cas, pourquoi ne pas faire de nop ?
Pour info, le périphérique commandé est un dispositif d'entrée sortie numérique. Le code est le gestionnaire d'interruption (à l'intérieur du BIOS) qui commande ces I/O.
Revenir en haut de page || Retourner aux forums || Retourner au forum


Cette discussion est archivée, il n'est plus possible de laisser des commentaires.
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.