x86
어셈블리어
에서,
JMP
命令語
는 無條件 점프를 遂行한다. 例를 들면
프로그램 카운터
의 變更을 통해 實行 흐름을 移動할 수 있다. 점프를 遂行하는 여러 種類의
命令 코드
가 있는데, 中央 處理 裝置가
리얼 모드
認知 또는
保護 모드
認知에 依存한다. 명령어들은
16비트
,
32비트
또는 세그먼트:오프셋
포인터
를 가진다.
[1]
여러 種類의 점프 形式이 있다. 相對, 條件附, 絶對 그리고 間接 레지스터 점프가 그것이다.
아래의 예제들은 다음을 의미한다.
- 16비트 포인터를 통한 相對 점프
- long 점프 (세그먼트 內의), 32비트 포인터를 통한 相對 점프
- 그리고 EAX 레지스터를 利用한 間接 레지스터 絶對 점프
(비록 처음과 두番째 점프가 相對的이지만, 普通
옵코드
에 符號化된 相對的인 오프셋 代身에, 目的地 住所가 보인다.)
例示 1: 새 값인
0x89AB
를 IP로 로드韓 다음,
CS 레지스터
에는
0xACDC
를, 그리고 IP에는
0x5578
를 로드한다.
JMP
0x89AB
JMP
0xACDC
:
0x5578
例示 2:
0x56789AB1
값을 IP를 로드한다. 오직 保護 모드나
언리얼 모드
에서만 可能하다.
例示 3: EAX 레지스터에 貯藏되어 있는 값으로 점프. 오직 保護 모드에서만 可能하다.
各州
[
編輯
]