2017-09-20 5 views
0

Ce sont des devoirs, donc je préfère être poussé dans la bonne direction plutôt que d'utiliser la réponse.Conversion des instructions d'assemblage au format hexadécimal?

Tâche: Offrir des codages binaires et hexadécimaux pour les instructions suivantes

SBC R0, R12, R6 

Utilisation des instructions du professeur, je suis en mesure de briser une partie de ce bas dans ce que je pense est le format binaire correct:

Cond 000 Op S Rn Rd 00000000 Rm 
---- --- ---- - ---- ---- -------- ---- 
1110 000 0110 0 1100 0000 00000000 0110 

Voici mes questions:
1) Quand le drapeau S 1 plutôt que 0 ? Comment puis-je savoir si le drapeau doit être 1 ou 0 basé sur le code d'assemblage donné?

2) Comment déterminez-vous, avec seulement le code d'assemblage donné, si c'est le type I ou le type R?

3) Pourquoi les champs 000 à 3 bits et 00000000 à 8 bits sont-ils constants?

EDIT: Le processeur est ARMv7

+0

Quel type de processeur est-ce? – harold

+0

Devrait être ARM7, a édité la question pour l'inclure – Mdomin45

+0

Jetez un coup d'oeil à la page 10 de ce [pdf] (http://vision.gel.ulaval.ca/~jflalonde/cours/1001/h17/docs/arm-instructionset .pdf) :) –

Répondre

2

En utilisant cette PDF comme référence, on trouve le format des instructions de traitement de données dans la section 4.5

                                                                                                                                    Cliquez sur l'image pour l'agrandir Data processing instruction

Rappelez-vous que la syntaxe de montage pour les instructions comme sbc est <opcode>{cond}{S} Rd,Rn,<Op2> et <Op2> est Rm{,<shift>} ou ,<#expression>

Bits 31-28

Ces quatre bits sont le code conditionnel qui prédicte l'instruction.
Si aucun suffixe de code conditionnel n'est spécifié dans l'instruction, AL (toujours) est implicite.
AL est codé comme 1110.

Bits 27 - 25

Les deux premiers bits sont toujours 0 pour l'instruction de traitement de données.
Le bit le plus bas est 1 si un immédiat est utilisé comme deuxième opérande ou 0 si un registre est utilisé.
Puisque r6 est le deuxième opérande, ces trois bits sont tous à zéro.

Bits 24 - 21
C'est le opcode, 0110 pour sbc.

Bit 20
Ceci correspond au suffixe S de la syntaxe d'assemblage.
Si défini, l'instruction définit les indicateurs, sinon ils sont inchangés.

Bits 19-16
Ceci est le premier registre d'opérande Rn, il est r12 et donc ces valeurs de champ 1100.

Bits 15-12
Ceci est le registre d'opérande de destination Rd, il est r0 et donc 0000 doit être utilisé pour ce champ.

Bits 11 - 0
Ce champ est interprété basé sur la valeur du bit 25 (bit I).
Lorsque I = 0, ce champs est

Bits 11-4
quantité de décalage.
Étant donné qu'aucun changement de vitesse est spécifiée dans l'instruction d'assemblage, ces bits sont égaux à 0.

Bits 3 - 0
second registre d'opérande Rm, ceci est r6 si 0110 est la bonne valeur.


Vous devez vous rappeler pour chaque instruction quel type de format il utilise.
Il y a beaucoup de structure, des motifs apparaissent et des catégories générales (comme "instructions de traitement de données") peuvent être définies mais il y a aussi un effort mnémotechnique (ex: les valeurs d'opcode, les champs de bits, etc ...