2016-04-11 19 views
-2

Imagine Ich möchte mit einem sofortigen (hinter einem Makro versteckt) springen:So geben Sie die direkte Breite an?

jmp label 

Wie kann ich die Breite der unmittelbaren angeben, so zum Beispiel die jmp Anweisung für rel8 ausgeführt wird. Ich habe versucht:

jmp byte label 

Aber es funktioniert nicht. Ich arbeite mit dem MSVC Inline Assembler.

+1

"es funktioniert nicht" ist keine angemessene Problembeschreibung. –

+1

Es funktioniert nicht, weil Sie nicht entscheiden können. Wenn Sie Glück haben, können Sie große Sprünge erzwingen. – usr2564301

Antwort

2

Der Assembler wählt automatisch die kleinste Kodierung für den Sprungbefehl. Mit MASM können Sie dies mit jmp SHORT label überschreiben, aber der Microsoft Inline Assembler ignoriert das Schlüsselwort SHORT.

Beachten Sie, dass selbst bei Verwendung von MASM das Label bei der Verwendung des SHORT-Schlüsselworts irgendwo anders in der Assemblydatei definiert werden muss und innerhalb von -128 bis +127 Bytes der Sprunganweisung liegen muss. Andernfalls erhalten Sie einen Fehler.

Verwandte Themen