Forum Programmation.autre Assembleur: jmp $+2 (késako ?)

Posté par  (site web personnel) .
Étiquettes : aucune
0
28
mai
2007
Bonjour,

Je 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...
  • # En simple

    Posté par  . Évalué à 2.

    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
    • [^] # Re: En simple

      Posté par  . É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  (site web personnel) . É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.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.