3byte jmp opcode?
글쓴이: declspec / 작성시간: 화, 2012/04/03 - 4:02오전
x86 어셈블리의 jmp 관련
내용들을 보면 short, near, far 점프가 있는데요
short 는 opcode 뒤에 1바이트 상대오프셋이 와서
-127~128 만큼 점프가 가능하고
near 의 경우 16비트 오프셋이 따라와서 +-32K 정도까지
점프가 가능하다고 합니다
그리고 near 점프는 3바이트 명령어라고 합니다
그런데 실제로 어셈블리의 hex 코드를 보면
opcode 가 E9 인 jmp 구문이
opcode 포함 5바이트를 차지하고
E9 라는 opcode 뒤에 오는 상대 오프셋도
4바이트로 지정하는것 같더군요...?
문서에서도
E9 opcode 에 대해서 뒤에 오는 상대 오프셋이
16비트/32비트 둘다 되는걸로 나와있는데
어셈블러가 E9 만 본다음 뒤에 몇바이트가 오프셋인지 어떻게 알까요?
그리고 3바이트 jmp 는 가능한건가요?
제가모르는 뭔가가 있는거같은데...
Forums:
RTFM
http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-2a-manual.html
댓글 달기