2010-03-21 6 views
1

Je fais du code ASM dans un code C avec la fonction asm.ASM x86 relatif JMP

Mon environnement est DVL avec la version gcc 3.

Salut besoin de faire un JMP à une adresse relative comme% eip + 0x1f.

Comment est-ce que je peux faire ceci?

Merci

Répondre

5

x86 prend en charge un court saut (JMP, opcode EB + 1 octet adresse relative) qui devrait faire ce que vous voulez.

Dans la plupart des assembleurs (y compris l'IIC de gcc en ligne), vous pouvez simplement placer une étiquette à l'endroit où vous voulez aller, et utiliser jmp mylabel pour laisser au membre le bon code et l'adresse relative pour le saut.

+1

Je viens d'essayer ça dans GCC, et ça marche (sauter aux étiquettes). Mais tu m'as battu au poteau! –

+0

pour l'assemblage en ligne de gcc: qu'en est-il sans étiquettes? __asm ​​__ ("jmp court 0x3F"); ne semble pas se dérober par exemple. Toute solution? – GalDude33