2010-01-25 137 views
2

在x86汇编中,如何执行另一个部分的无条件跳转?汇编:从一个部分跳转到另一个部分

如:

.section .text 
main: ... 
     jmp here 
     ... 

.section .another 
here: ... 

我想这是一个远跳转。尝试运行时出现段错误。任何解决方法?

+3

哪个汇编程序? – 2010-01-25 03:02:13

+0

糟糕!我正在使用GAS。 – TripShock 2010-01-26 13:19:11

回答

1

既然你没有指定什么汇编型(NASM,气,MASM,TASM)

如果你知道段是在here部分,例如,如果.section部分代码段0x8中,那么你可以这样做:

 
jmp 0x8:here 

你可以定义常量指定段和使用也再次...您的里程将根据汇编程序有所不同..

希望这有助于 要st问候, 汤姆。

+1

此外,请参阅此处的另一种方法,将堆栈上的段推入堆栈,将堆栈上的标签地址推入并发出远端返回,如图所示http://stackoverflow.com/questions/1398034/inline-assembly -jump-error – t0mm13b 2010-01-25 03:22:15

+2

虽然请记住,在没有相应调用的情况下发出一个返回可能会扰乱分支预测器中的内部堆栈,这与函数调用性能有关。你应该使用远程回报从远程回呼中返回,否则就是远程回跳。 – 2010-01-25 03:29:31

+0

你如何在GAS中实现远程跳跃? – TripShock 2010-01-26 13:19:47

相关问题