[x86] instruction length berechnen
-
Hallo
ich verzweifle grade an der länge der x86-befehlen.
teilweise können die ja sogar 13 bytes! lang werden.ich suche da eine tabelle oder mehode von einem opcode-stream
die länge einer einzelnen anweisung zu berechnen.einige befehle codieren im ersten byte ihre länge, manche auch im zweiten.
gibt es da nicht irgenteine möglichkeit?z.b.
bool one_size_instrction[] = {true, false...};
if (one_size_instruction[instruction[0]])
if (two_size_instruction[instruction[0]][instruction[1]])einen einfachen weg das zu berechnen. ob asm, c, is egal, es sollte nur keine
komplette decoder-lib sein (länge reicht, instr. selber is egal).MfG sizer
-
Um das dekodieren kommst du nicht herum! Die Länge hängt vom Opcode, Prefixes, Operanten und Art der Adressierung ab. Im Ganzen ist das nicht trivial - von daher empfehle ich dir eine disassembler library wie z.B. distorm zu verwenden.
-
Die Befehle können übrigens länger als 13 Bytes sein, nämlich 17
-
Falsch! Sowohl bei Intel als auch bei AMD ist das Limit 15 Byte.
-
__asm{} schrieb:
Falsch! Sowohl bei Intel als auch bei AMD ist das Limit 15 Byte.
Quelle? Meine Quelle ist "Computer Organization" von Patterson & Hennessy.
-
ASM-Hacker schrieb:
Meine Quelle ist "Computer Organization" von Patterson & Hennessy.
Haben sie in deiner Quelle einfach nur 4+3+1+1+4+4 zusammengezählt? Poste mal einen 3-Byte-Opcode dessen Immediate > 1 Byte ist.
x86
-
ASM-Hacker schrieb:
Quelle?
Intel
64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M schrieb:
The instruction-size limit of 15 bytes still applies to instructions
with a REX prefix.AMD64 Architecture Programmer’s Manual Volume 3: General-Purpose and System Instructions schrieb:
An instruction can be between one and 15 bytes in length.
-
hm schade, dachte nicht, dass das soooo kompilziert ist.
naja vielen dank für den link __asm{}
das teil sieht gut aus und hat ein übersichtliches interfaceMfG sizer
-
sizer schrieb:
...das teil sieht gut aus und hat ein übersichtliches interface
Welches Teil meinst Du? AMD64?
-
ich mein die lib, distorm.
getestet und funzt. und flott ist sie auch noch