far jump auf einen tss-desktriptor?
-
hi,
ich kann ja folgendermaßen einen farjump auf einen tss-deskriptor machen um zu diesem task zu wechseln:
jmp 18h:0
funktioniert auch wunderbar
aber das bringt mir ja nicht wirklich viel *g*... ich will irgendwie angeben können in welchen tss-desktriptor ich springen will... also so in etwa_jump_to_tss: push ebp mov ebp, esp mov eax, dword [ebp+8] jmp eax:0 pop ebp retn
nur funzt dieses "jmp eax:0" halt net *g*
wie muss ichs anstellen damit das funzt?marcel
-
Hi.
Jo, so wie du das versuchst funktioniert das nicht => Da gibt es aber so feine sachen, wie indirekte Jumps.
Dabei wird die Zieladresse aus einer angegebenen Speicheradresse ausgelesen.Bsp:
jmp [dword ptr MyDestAddr] MyDestAddr dd offset DestProc ;<-ZielOffset dw 0018h ;<-ZielSelector
;
-
danke für die schnelle antwort
aber bei
jmp [dword ptr MyDestAddr]
meint mein nasm nur "kernel.asm:189: parser: expecting ]"
wie funktioniert's mit dem nasm?
-
und wenn ich's so versuche:
mov ax, 18h mov fs, ax jmp dword far [fs:dword 0h]
dann bekomm ich immer ne "0x0D general protection exception"
-
ok hat sich erledigt
-
Nobuo T schrieb:
jmp [dword ptr MyDestAddr] MyDestAddr dd offset DestProc ;<-ZielOffset dw 0018h ;<-ZielSelector
;
Ähmm, müsste es nicht 'jmp fword ptr [MyDestAddr]' heißen? *vorsichtig frag*
-
bei mir heißt es jetzt "jmp dword far [fs:MyDestAddr]" und funktioniert wunderbar
-
malfunction schrieb:
Nobuo T schrieb:
jmp [dword ptr MyDestAddr] MyDestAddr dd offset DestProc ;<-ZielOffset dw 0018h ;<-ZielSelector
;
Ähmm, müsste es nicht 'jmp fword ptr [MyDestAddr]' heißen? *vorsichtig frag*
Jo, hast recht.
Weiss aber net, ob es das fword auch beim NASM gibt.