Archiv verlassen und diese Seite im Standarddesign anzeigen : Je ( Near & Far & Short )
Format C:
27.08.2002, 16:30
moin
Also mit JE SHORT lassen sich Sprünge von +/-128 Byte von der aktuellen Stelle aus überwinden.
Und wie sieht es mit NEAR oder FAR aus ? Wie weit kann man da Springen ?
Übrigens: Bei NASM geht z.B: JE FAR Marke1 nicht :(
Felix Kaiser
27.08.2002, 16:35
FAR meint, dass sich nach dem CALL/JUMP das Code Segment ändert bzw. das Ziel mit CS:(E)IP angegeben wird. NEAR meint, dass das Ziel von CALL/JUMP sich innerhalb des aktuellen Code Segments befindet.
Jan Krüger
27.08.2002, 17:11
Übrigens: Bei NASM geht z.B: JE FAR Marke1 nicht
meines wissens gibt es für konditionale jumps kein FAR...?
Felix Kaiser
27.08.2002, 17:22
Eben, es werden FAR Jumps erzeugt wenn man eine ganze Adresse als Sprungziel angibt. Aber soweit ich weiß, hatte der Turbo Assembler beispielsweise Probleme damit und hat ganz komische Undinger erzeugt, die natürlich nicht funktionierten. Bei FAR Calls übrigens auch. Ein Grund weshalb ich immer direkt den Opcode für diese Arten benutzt hab ;)
*gg* wie kann man denn direkt den opcode eingeben?
Jan Krüger
28.08.2002, 04:04
so:
mov eax,12345678h
db 0EBh, 00h
nop
retn
:)
aber auf jeden fall:
je 1234h:12345678h ist nicht möglich. egal, ob assembler-mnemonics oder maschinencode.
Felix Kaiser
28.08.2002, 15:10
Öhm, ...
db 0EAh
dw 5678h,1234h
Wäre ein FAR Jump im 16 Bit Modus auf 1234:5678.
push dword ptr 8
push dword ptr 1000h
retf
Wäre in etwa auch dasselbe wie ein FAR Jump, nur über den Stack geschleift. Das Beispiel springt im 32 Bit Modus auf Selektor 8, Offset 0x00001000.
0xEA ist der Opcode für FAR Jump.
0x9A ist der Opcode für FAR Call.
Merkt man sich mit der Zeit einfach ;)
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.