Langage assembleur, signification movl $0,%eax

Résolu/Fermé
Nikola18 - Modifié par Nikola18 le 4/02/2016 à 21:51
 Nikola18 - 4 févr. 2016 à 22:20
Bonjour,

Je m'initie au langage machine depuis peu, et je ne comprend pas trop que fait cette ligne: (je sais, ça doit être plus que basique, mais bon...)

movl $0,%eax

Est ce qu'elle attribue la valeur 0 au registre eax ? On m'a dit que non, mais j'ai pas compris les explications... Pouvez vous m'aidez s'il vous plaît ?

Merci d'avance :)

3 réponses

kyon0043 Messages postés 605 Date d'inscription samedi 16 janvier 2016 Statut Membre Dernière intervention 14 septembre 2016 322
4 févr. 2016 à 21:58
Je ne suis pas un expert en assembleur, mais movl $0 , %eax devrait mettre la valeur 0 dans le registre eax (le remettre a 0x00000000). Par contre, si tu avait movl $0, (%eax), cela mettrai la valeur 0 en mémoire à l'adresse précédemment contenue dans le registre eax.
Par exemple, si tu fait
movl $0x400, %eax
movl %0x200, (%eax)

Cela signifie que tu aura mis la valeur 0x200 dans la mémoire de eax à l'adresse 0x400
2
D'accord cette fois j'ai bien compris :)
Merci beaucoup pour ta réponse !
0
kyon0043 Messages postés 605 Date d'inscription samedi 16 janvier 2016 Statut Membre Dernière intervention 14 septembre 2016 322
4 févr. 2016 à 22:11
de rien
0
jeannets Messages postés 26772 Date d'inscription dimanche 9 septembre 2007 Statut Contributeur Dernière intervention 24 avril 2024 5 767
4 févr. 2016 à 22:03
Bonsoir,

Normalement, c'est écrit ainsi movl $0, %eax.... il y a un espace. C'est peut etre ça l'erreur.

Mais pour moi, c'est bien une mise à zéro de eax, c'est généralement ce qu'on fait juste avant une boucle.

Ceci dit, il peut y avoir des finesses selon le contexte..
1
D'accord, je vois l'idée, merci :)
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
Modifié par jisisv le 4/02/2016 à 22:12
  • movl $0, %eax

est l'équivalent de l'instruction dans la syntaxe GNU/gas de
  • mov eax, 0

C'est-à-dire placer la constante immédiate 0 dans le registre eax
Si tu veux des informations concernant la syntaxe GNU de l'assembleur de la famille I386, regarde par exemple:
Introduction to Linux Intel Assembly Language
Gates gave ^W  sold  you the windows.
GNU gave us the whole house.(Alexandrin)
0
D'accord, je vais regarder le site, merci :)
0