条件跳转到注册

Gra*_*dma 3 x86 assembly x86-64

请帮我解决我的问题.

我想得到这些命令:

jl some_label(%rip)
# or
jl *%rax
Run Code Online (Sandbox Code Playgroud)

在我的asm程序中,我正在为intel x64架构编写.

当我尝试编译这段代码时,GCC说"jl的操作数类型不匹配".

Mic*_*ael 6

条件跳转在x86上是相对的.您可以使用"反向"条件跳转,然后是无条件跳转:

  jge   skip_jump
  jmp   *%rax       # AT&T syntax
skip_jump:
Run Code Online (Sandbox Code Playgroud)

我不确定使用AT&T语法时寄存器间接跳转的具体语法(无论是jmp rax或者jmp rax或其他变体).