인텔 아키텍처 매뉴얼

KANOTYPE WIKI
둘러보기로 이동 검색으로 이동

인텔 아키텍처 매뉴얼은 인텔(Intel)이 공개한 Intel 64와 IA-32 아키텍처 CPU를 위한 소프트웨어 개발 매뉴얼이다. 매뉴얼 본체는 이곳에서 다운로드 할 수 있다.

이 문서는 인텔 공식 매뉴얼을 간단히 해설한 것이다.

명령 형식

Instruction Prefixes Opcode ModR/M SIB Displacement Immediate
1byte(옵션) 1~3byte 1byte(필요한 경우) 1byte(필요한 경우) 1,2,4byte(필요한 경우) 1,2,4byte(필요한 경우)

Instruction Prefixes

접두어는 4가지 그룹으로 나누어지며, 명령어는 각 그룹에서 최대 1개의 접두어만 효과가 있다. 각 그룹의 접두어는 순서에 상관없다.

  • 그룹 1
    • F0H : LOCK 접두어.
    • F2H : REPNE/REPNZ 접두어. 문자열과 I/O관련 명령에만 사용가능하다.
    • F3H : REP/REPE/REPZ 접두어. 문자열과 I/O관련 명령에만 사용가능하다. (F3h는 특정 명령에서 필수 접두어로 쓰이기도 한다.)
  • 그룹 2
    • 세그먼트 덮어쓰기 접두어 : 메모리 읽기, 쓰기시에 참조하는 세그먼트 레지스터를 기본설정 외의 레지스터로 변경한다.
      • 2EH : CS segment override (use with any branch instruction is reserved)
      • 36H : SS segment override prefix (use with any branch instruction is reserved)
      • 3EH : DS segment override prefix (use with any branch instruction is reserved)
      • 26H : ES segment override prefix (use with any branch instruction is reserved)
      • 64H : FS segment override prefix (use withany branch instruction is reserved)
      • 65H : GS segment override prefix (use with any branch instruction is reserved)
    • Branch hints:
      • 2EH : Branch not taken (used only with Jccinstructions)
      • 3EH : Branch taken (used only with Jccinstructions)
  • 그룹 3
    • 66H : 오퍼랜드[1] 크기 덮어쓰기 접두어. 16비트 데이터형을 32비트 데이터형으로 확장한다. (예: mov ax, 0x33 -> mov eax, 0x33)
  • 그룹 4
    • 67H : 주소 크기 덮어쓰기 접두어. ModR/M 해석시 32비트 모드로 해석한다. 기본값은 16비트 모드. CPU설정에 따라 이 접두어가 없어도 기본적으로 32비트로 해석하는 경우도 있다.

Opcode

명령의 종류를 나타내는 중요 부분. 1~3byte의 크기를 가지며 때때로 ModR/M에 추가로 3비트의 정보를 포함할 수 있다.

ModR/M

오퍼랜드의 조합을 나타내는 1byte의 파라메터.

명령 분석 가이드

주석

  1. 오퍼랜드란 명령어(opcode)가 필요로 하는 파라메터이다.

x86 관련 문서