Ich bin mir nicht sicher, ob ich Ihre Frage verstanden habe. Ich nehme an, dass Sie nach dem Offset fragen, der in der Anweisung kodiert wird.
Da das Ziel auf 0x00400040 und der aktuelle PC auf 0x00400010 liegt, ist der Offset wahrscheinlich 0x00000030 (weil 0x00400040 - 0x00400010 = 0x00000030). Dies kann leicht in das von Ihnen gewünschte Binärformat konvertiert werden:
0000 0000 0000 0000 0000 0000 0011 0000
Aber bitte beachten Sie, dass ich MIPS nicht kenne. In einigen Prozessorarchitekturen, die in den Befehl codiert Offset ist
(target PC) - ((current PC) + (size of current instruction))
Da ich MIPS weiß es nicht, ich weiß nicht, was die Byte-Größe des beq
Befehls ist. Daher kann ich den Offset für diesen Fall nicht berechnen. Wenn Sie mir die Größe der beq
Anweisung mitteilen, werde ich diese Antwort bearbeiten und hinzufügen.
Außerdem sind in den meisten Prozessorarchitekturen relative Offsets für die meisten Befehle eingeschränkt. Noch einmal, ich kenne MIPS nicht, aber die Wahrscheinlichkeit ist, dass der Offset auf 16, 12 oder sogar 8 Bits begrenzt ist. Um in diesem Fall die tatsächliche binäre Offsetdarstellung zu erhalten, entferne Nullen von links von der oben angegebenen Binärzahl, bis nur noch die Bits übrig sind, die zum Speichern des Offsets verwendet werden.
EDIT (unter Berücksichtigung Busy Beaver Kommentar)
Auf MIPS, so scheint es, dass die Anweisungen auf 32 Bit/4 Byte ausgerichtet sind. Dies ermöglicht es, den tatsächlich benötigten Offset geteilt durch 4 zu speichern (die CPU liest dann den Offset und multipliziert ihn mit 4, um das tatsächliche Ziel zu berechnen). Der Vorteil ist, dass Sie mit den angegebenen Bits größere Offsets speichern können. Mit anderen Worten, Sie speichern 2 Offset-Bits auf diese Weise.
In Ihrem Beispiel sollte der PC um 0x00000030
Bytes springen, um zum Ziel zu gelangen. Der in der Anweisung gespeicherte Offset wäre dann 0x00000030/4
, was dasselbe ist wie 0x00000030 >> 2
, was 0x0000000C0
ist. Sie bat um die binäre Darstellung:
0000 0000 0000 0000 0000 0000 0000 1100
Beim Dekodieren/Ausführen des Befehls, die CPU automatisch, dass von vier und auf diese Weise wird wieder die eigentliche Offset gewünschten Offset multipliziert.
* Was ist der binäre Wert der Konstante in der Anweisung? * - Welche Konstante? – Marco
Ich bin nicht sicher, was es bedeutet, wenn es nach dem binären Wert der Konstante fragt – Andre
Könnten Sie bitte spezifischer sein, weil ich das Problem nicht verstehe, das Sie gegenüberstellen? Du verstehst nicht was "Beq" tut? Du verstehst nicht, was mit dem PC passiert? Was ist das Problem? – Marco