2010-01-25 121 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

相關問題