• [^] # Re: Questions pas très claire

    Posté par (site web personnel) . En réponse au message adressage relatif en assembleur amd64, je suis perdu. Évalué à 2. Dernière modification le 01 avril 2012 à 23:25.

    Mh… j'ai toujours quelques problèmes. Tu parles de deux choses: le code assembleur et sa traduction en binaire, mais tu ne donnes que l'une…

    La première et la dernière instruction sont identiques, en tout point. Elles font la même chose, et pourtant si %rip vaut 0 lors de la première instruction, lors de la dernière il vaut 10.

    J'ai l'impression que tu confonds le registre et son contenu.

    La question c'est comment est-ce que le processeur fait pour calculer des positions fixes dans en mémoire en utilisant rip qui change à chaque instructions traitées?

    > objdump -d a.out
    a.out: file format elf64-x86-64-freebsd
    Disassembly of section .text:
    0000000000000000 <.text>:
     0: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 0x6
     6: 90 nop 
     7: 90 nop 
     8: 90 nop 
     9: 90 nop 
     a: 8b 05 00 00 00 00 mov 0x0(%rip),%eax # 0x10
    
    

    Ce qui est commun aux instructions c'est le registre, pas son contenu.