flat assembler
Message board for the users of flat assembler.
![]() |
Author |
|
revolution
In long mode you have to point to a memory address with your address:
Code: use64 MyAddress: dq $272727 dw 8 jmp tword [MyAddress] |
|||
![]() |
|
asmdev
Thank you
|
|||
![]() |
|
Enko
|
|||
![]() |
|
cod3b453
I'm glad I saw this; I though this was not possible.
Thanks ![]() |
|||
![]() |
|
asmdev
Hello again. Ran into weird problem today. Apparently long jump with 64bit offset doesn't work on AMD Athlon x2 4400+.
new version: Code: use64 MyAddress: dd $272727 dw 8 jmp pword [MyAddress] Amd docs(Nov 2009) say that 64bit offset is not supported for far jump if target is code segment, only 32bit. So I changed from "tword " to "pword" and now it works ! |
|||
![]() |
|
BAiC
the address component at the memory location needs to be a QWORD, not a DWORD.
|
|||
![]() |
|
ouadji
The equivalent exists for the 64-bit mode (i'm sure), but I'm not an expert in 64bits. Code: use32 push 8 push x retf pushfd push 8 push x iretd |
|||
![]() |
|
asmdev
BAiC wrote: the address component at the memory location needs to be a QWORD, not a DWORD. Quote:
|
|||
![]() |
|
Tomasz Grysztar
JMP m16:64 is Intel's extension, original AMD's x86-64 never had it.
|
|||
![]() |
|
BAiC
sorry, my bad.
|
|||
![]() |
|
Feryno
use IRETQ instruction (has 48h prefix) as ouadji already suggested
just push 5 necessary things before the instruction if you want to jump to compatibility mode then IRET is enough (without 48h prefix) - because addresses are only 32 bit there |
|||
![]() |
|
< Last Thread | Next Thread > |
Forum Rules:
|
Copyright © 1999-2020, Tomasz Grysztar. Also on GitHub, YouTube, Twitter.
Website powered by rwasa.