This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
X86 Assembly Short Jump
- From: <goa at rogers dot com>
- To: <gcc-help at gcc dot gnu dot org>
- Cc: <goa at rogers dot com>
- Date: Mon, 29 Dec 2003 22:46:47 -0500
- Subject: X86 Assembly Short Jump
I've having a problem using gcc's inline assembly on a Pentium 3 running
redhat linux:
I'm working inside a __asm__("."); block and I'd like to execute a short
(near relative) jump instruction. It doesn't seem to work. Instead, I
get a near jump to an absolute position, so I figure that I'm doing
something wrong. If anyone could help, I'd appreciate it..
When the instruction is executed, eip is set to 0x02, instead of being
set to eip+2. I looked at the disassembly in gdb and the op-code I
should be getting according to the Intel IA32 Instruction Set Reference
is "EB" but instead I'm instead getting "E9".
Again, any help would be appreciated. Perhaps there's a better way to
jump to a relative position within an assembly block.
-kris
__asm__("
.
JMP 0x02 # Should add 0x02 to eip, but instead, it sets
eip to 0x02.
.
");