Gcc 有条件跳转到绝对地址x86

Gcc 有条件跳转到绝对地址x86,gcc,assembly,x86,Gcc,Assembly,X86,我想有条件地跳转(使用JNE)到绝对地址。 我使用GCC编译了以下代码,并得到以下错误: {standard input}: Assembler messages: {standard input}:8: Error: operand type mismatch for `jne' {standard input}:13: Error: operand type mismatch for `jne' 有人知道怎么解决吗?我还尝试不将地址存储在ebx寄存器中,而是直接跳转到地址,但没有成功 mo

我想有条件地跳转(使用
JNE
)到绝对地址。
我使用GCC编译了以下代码,并得到以下错误:

{standard input}: Assembler messages:
{standard input}:8: Error: operand type mismatch for `jne'
{standard input}:13: Error: operand type mismatch for `jne'
有人知道怎么解决吗?我还尝试不将地址存储在
ebx
寄存器中,而是直接跳转到地址,但没有成功

mov ebx, dword [0x8048593]
mov eax, [ebp+var_88]
cmp eax, 0x23 #check if the first char is #
jne ebx
lea eax, [ebp+var_88]
add eax, 1
mov eax, [eax]
cmp eax, 0x21 #check if the second char is !
jne ebx
add eax, 1
mov [esp+0x98+var_98], eax
call 0x80485B1
push 0x80485AE
ret

您只需反转条件即可跳过正常的无条件跳转<代码>跳过;jmp-ebx;斯基普:…@Jester不幸的是,这对我来说不是一个很可能的解决方案。正如您在我的代码中看到的,我正在处理一个局部变量,它将不存在于函数skip中。它不是一个不同的函数。。。它只是一个标签,因此您可以跳过
jmp
。不影响局部变量。只是表示未定义
var_88
,这与更改无关。错误消息只是将函数的
skip
出错,但这是无害的。使用
.skip:
作为标签名称,因此它是一个本地标签(并且不会获得函数级符号表项)。您只需反转条件即可跳过正常的无条件跳转<代码>跳过;jmp-ebx;斯基普:…@Jester不幸的是,这对我来说不是一个很可能的解决方案。正如您在我的代码中看到的,我正在处理一个局部变量,它将不存在于函数skip中。它不是一个不同的函数。。。它只是一个标签,因此您可以跳过
jmp
。不影响局部变量。只是表示未定义
var_88
,这与更改无关。错误消息只是将函数的
skip
出错,但这是无害的。使用
.skip:
作为标签名称,使其成为本地标签(并且不会获得函数级符号表条目)