2010-01-25 2 views
2

x86 어셈블리에서 한 섹션에서 다른 섹션으로 무조건 점프를 수행하려면 어떻게해야합니까?조립 : 한 섹션에서 다른 섹션으로 건너 뛰기

예 :

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

.section .another 
here: ... 

나는이 훨씬 뛰어 것 같다. 이걸 실행할 때 세그 폴트가 생겼어. 해결 방법은 없습니까?

+3

어떤 어셈블러입니까? –

+0

죄송합니다. 나는 GAS를 사용하고있다. – TripShock

답변

1

지정하지 않았기 때문에 어떤 어셈블러 유형 (NASM, 가스, MASM, TASM)

당신이 어떤 세그먼트 것은하여 here 일부 알고있는 경우, 예를 들어, .section 부분은 코드 세그먼트 0x8이있는 경우, 당신은이 작업을 수행 할 수 있습니다 : 수

 
jmp 0x8:here 

당신이 도움이 .. 세그먼트도 ... 다시 주행 거리가 어셈블러에 따라 달라집니다 사용을 지정하는 을

희망을 상수를 정의 할 수 있습니다 안부, 톰.

+1

또 다른 방법은 여기를 참조하십시오. 스택에서 세그먼트를 누르고 스택의 레이블 주소를 누르고 http://stackoverflow.com/questions/1398034/inline-assembly와 같이 원거리 복귀를 실행하십시오. -jump-error – t0mm13b

+2

해당 콜이없는 리턴을 발행하면 분기 예측기의 내부 스택이 엉망이 될 가능성이 있지만, 이는 함수 호출 성능과 관련이 있습니다. 원거리 전화에서 돌아 오려면 원거리 복귀를 사용해야하고, 그렇지 않으면 원거리 점프를 사용해야합니다. –

+0

GAS에서 멀리뛰기를 어떻게 수행합니까? – TripShock