2017-09-20 5 views
0

Das sind Hausaufgaben, also würde ich lieber in die richtige Richtung gedrängt werden, als die Antwort mit dem Löffel zu geben.Konvertieren von Montageanweisungen in hexadezimales Format?

Aufgabe: Geben Sie binäre und hexadezimale Kodierungen für die folgenden Anweisungen

SBC R0, R12, R6 

einige Anweisungen vom Professor Verwendung, ich habe in der Lage, in einige dieser zu brechen, was ich denke, die richtige Binärformat ist:

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

Hier sind meine Fragen:
1) Wann ist der S-Flag 1 statt 0 ? Wie kann ich feststellen, ob die Flagge 1 oder 0 nur basierend auf dem angegebenen Assembly-Code sein sollte?

2) Wie bestimmen Sie mit nur dem Assembly-Code, ob es I-Typ oder R-Typ ist?

3) Warum sind die 3-Bit-Felder 000 und 8-Bit 00000000 konstant?

EDIT: Der Prozessor ARMv7 Unter Verwendung dieses PDF als Referenz

+0

Für welche Art von Prozessor ist das? – harold

+0

Sollte ARM7 sein, bearbeitet die Frage, um sie einzuschließen – Mdomin45

+0

Werfen Sie einen Blick auf Seite 10 [pdf] (http://vision.gel.ulaval.ca/~jflalonde/cours/1001/h17/docs/arm-instructionset .pdf) :) –

Antwort

2

ist, findet man das Format für die Datenverarbeitungsanweisungen in Abschnitt 4,5

                                                                                                                                    Bild anklicken Data processing instruction

Denken Sie daran, um es zu vergrößern, dass die Montage Syntax für Befehle wie sbc ist <opcode>{cond}{S} Rd,Rn,<Op2> und <Op2> ist Rm{,<shift>} oder ,<#expression>

Bits 31-28

Diese vier Bits sind der bedingte Code, der den Befehl prädiziert.
Wenn kein bedingtes Code-Suffix in der Anweisung angegeben wird, wird AL (immer) impliziert. 25

Die ersten beiden Bits sind immer 0 für die Datenverarbeitungsanweisung -
AL als 1110.

Bits 27 codiert.
Das niedrigste Bit ist 1, wenn ein unmittelbarer als zweiter Operand oder 0 verwendet wird, wenn ein Register verwendet wird.
Da r6 der zweite Operand ist, sind diese drei Bits alle null.

Bits 24-21
Dies ist der Opcode, 0110 für sbc.

Bit 20
Dies entspricht die S Suffix der Montage Syntax.
Wenn gesetzt, setzt der Befehl die Flags, ansonsten sind sie unverändert.

Bits 19-16
Dies ist das erste Operandenregister Rn ist es r12 und somit ist dieser Feldwert 1100.

Bits 15-12
Dies ist das Zieloperand Register Rd ist es r0 und somit 0000 muss für dieses Feld verwendet werden.

Bits 11-0
Dieses Feld interpretiert wird, auf dem Wert der Bit-basierten 25 (Bit I).
Wenn I = 0, diese Felder ist

Bits 11-4
Shift-Betrag.
Da keine Verschiebung in der Montageanleitung angegeben, diese Bits sind 0.

Bits 3-0
Second Operandenregister Rm, ist dies so r6 0110 der richtige Wert ist.


Sie müssen sich für jede Anweisung merken, welche Art von Format es verwendet.
Es gibt eine Menge Struktur, Muster entstehen und allgemeine Kategorien (wie "Datenverarbeitungsanweisungen") können definiert werden, aber letztlich gibt es auch einen mnemonischen Aufwand (zB die Opcode-Werte, die Bitfelder usw.)

Verwandte Themen