JMP(x86 명령)

JMP (x86 instruction)

x86 어셈블리 언어에서 명령은 무조건 점프를 수행한다.이러한 명령은 프로그램 카운터를 변경하여 실행 흐름을 전달한다.점프를 수행하는 여러 가지 다른 opcode가 있다; 프로세서가 실제 모드인지 보호 모드인지, 그리고 오버라이드 지침이 사용되는지에 따라, 지침은 16비트, 32비트 또는 세그먼트:오프셋 포인터를 사용할 수 있다.[1]

점프에는 상대 점프, 조건부 점프, 절대 점프, 등록 간접 점프 등 다양한 형태가 있다.

다음의 예는 다음과 같다.

  1. 16비트 포인터가 있는 상대 점프
  2. 32비트 포인터가 있는 상대 점프(인터체인지), 롱 점프
  3. EAX 레지스터를 사용하는 레지스터 간접 절대 점프를 한다.

(첫 번째와 두 번째 점프는 상대적이지만 일반적으로 opcode에 인코딩된 상대 오프셋 대신 목적지 주소가 표시된다는 점에 유의하십시오.)

예 1: 새 값으로 IP 로드0x89AB, 다음으로 CS 로딩:0xACDC및 IP 와 함께 사용0x5578.

JMP 0x89AB JMP 0xACDC:0x5578 

예제 2: 값이 있는 EIP 로드0x56789AB1보호 모드 또는 비현실 모드에서만.

JMP 0x56789AB1 

예 3: 보호 모드에서만 EAX 레지스터에 저장된 값으로 이동하십시오.

JMP EAX. 

참조

  1. ^ "Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual (6.5MB)" (PDF). Archived from the original (PDF) on 2009-02-19. Retrieved 2009-11-03.