IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres architectures Assembleur Discussion :

[ARM] code machine de MOV


Sujet :

Autres architectures Assembleur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 5
    Points
    5
    Par défaut [ARM] code machine de MOV
    Bonjour,

    Je suis en 2° année d'IUT Informatique Embarqué et je doit réaliser la décomposition en binaire de du code machine de MOV r3,#0x81 avec un microcontroleur ARM v7.

    La doc de référence m'indique que le code machine de binaire de MOV est sous la forme :

    11110 i 0 0010 S 1111 0 imm3 Rd imm8

    Ma question porte sur la valeur que je doit mettre pour i, S et imm3. Pensant que la valeur de Rd correspond a 011 et imm8 à 0x81 en binaire.

    Donc voila n'hésiter pas à me demander plus de renseignement si j'en ai oublié.


    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Hello,

    Je précise d'abord que je ne suis pas du tout un spécialiste en ARM...

    On cherche un peu dans le manuel de référence (pris ici):

    L'encoding de MOV est donné au chapitre A6.7.75: MOV (immediate)

    On prend l'encoding T2 qui correspond à ARMv7:

    Encoding T2 ARMv7-M
    MOV{S}<c>.W <Rd>,#<const>

    11110 i 0 0010 S 1111 0 imm3 Rd imm8
    - Imm8: c'est la valeur immédiate en binaire (8 bits): 0x81 => 10000001
    - Rd: valeur en binaire du numéro du registre (3 bits): 3 => 011

    Là ça c'est un peu compliqué. J'ai bataillé pour comprendre à quoi servait 'i' et 'imm3' (qui ne sont pas définis dans le chapitre sur l'encoding des instructions...). Il faut en fait regarder au chapitre A5.3.2: "Modified immediate constants in Thumb instructions".

    On prend l'encoding de base (c-a-d que l'opérande reste tel qu'il est encodé dans imm8: pas de transformation. Voir un autre exemple en fin de post qui affecte la représentation de l'opérande):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    i:imm3:a     const
    0000x        00000000 00000000 00000000 abcdefgh
    - i (1 bit): 0
    - imm3 (3 bits) : 000
    a: dépend de l'opérande immédiate: dans notre cas 0


    Le bit 'S' dépend si l'on veut utiliser les codes de conditions (affectation de des drapeaux V, C, Z et N). Si le bit est armé (à 1) le mnémonique de l'instruction est 'MOVS', sinon c'est 'MOV'.

    Dans le cas qui nous intéresse, je mettrais le drapeaux à 0: on cherche l'encoding de 'MOV' pas 'MOVS'


    Résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MOV.W R3,#129 => 11110000010011110000001110000001
     
    11110 0 0 0010 0 1111 0 000 0011 10000001
    Voilà, j'espère ne pas m'être trompé

    -------------------
    Exemple d'encoding différend pour i:imm3:a:, sachant que notre constante reste à 0x81:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    i:imm3:a      const
    0001x         00000000 abcdefgh 00000000 abcdefgh
    donc:

    MOV.W r3, 0x00810081

Discussions similaires

  1. Instruction mov en code machine
    Par elendile dans le forum Assembleur
    Réponses: 1
    Dernier message: 06/01/2011, 16h49
  2. Comment le processeur comprend-il le code machine ?
    Par Invité1 dans le forum Assembleur
    Réponses: 18
    Dernier message: 09/07/2010, 00h36
  3. Pb Debuggage Sources/Code Machine
    Par cjacquel dans le forum Visual C++
    Réponses: 1
    Dernier message: 05/09/2007, 15h50
  4. Réponses: 1
    Dernier message: 19/04/2007, 21h52
  5. Code machine
    Par Willand dans le forum Assembleur
    Réponses: 2
    Dernier message: 20/01/2003, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo