2017-07-04 26 views
0

stieß ich auf die folgende Anweisung, wenn am Ausgang von einem Disassembler, läuft auf einem OS binär suchen:Was macht `BNE # + - 20` ARM Befehl?

BNE #+-20 

Ich weiß, was die BNE Anweisung tut, aber ich habe nicht in der Lage zu finden, jeden Hinweis auf +-.

Wenn Z ungleich Null ist, wo springt der Programmzähler?

Oder vielleicht mein Disassembler ist fehlerhaft?

+0

@CodyGray finden Sie in der Bearbeitung. –

+0

'+ -' bedeutet dasselbe wie in der normalen Mathematik. Hinzufügen einer negativen Zahl –

Antwort

2

Ich muss zugeben, dass ich nie zuvor die Notation #+ gesehen habe; Disassembler, die ich verwendete, ersetzten das Argument der relativen Sprunganweisungen durch die Zieladresse.

Aber ich denke, dass #+X bedeutet: Die Adresse dieser Anweisung (oder die folgende - abhängig von der Architektur) plus X Bytes (oder Wörter).

Also #+-20 bedeutet: "Die Zieladresse ist die Adresse dieser Anweisung minus 20 Bytes". (*)

(*) Sie müssen herausfinden, ob -20 an die Adresse der BNE Anweisung relativ selbst oder an die Adresse des nächsten Befehls und Sie müssen herausfinden, ob -20 die Anzahl von Bytes ist oder den Anzahl der 16- oder 32-Bit-Wörter.