INT (x86 명령어)

INTx86 중앙 처리 장치를 위한 어셈블리어로서, 인터럽트를 발생시키는 역할을 한다. 이것은 바이트 값으로 구성된 인터럽트 번호를 가진다.[1]

어셈블리어로 작성될 경우, 명령어는 아래와 같다.

INT X

 X 는 소프트웨어 인터럽트로서 (0-255)의 값으로 생성된다.

문맥과, 컴파일러, 또는 어셈블리어에 따라 소프트웨어 인터럽트 번호는 종종 십육진법 값으로 주어진다. 예를 들면 INT 21H은 소프트웨어 인터럽트 0x21 (10진수로는 33)을 생성한다. MS-DOS API호출에서 이것은 인터럽트 테이블에 있는 34번째 벡터를 가리킴으로써 이 함수를 실행시킨다.

리얼 모드 편집

소프트웨어 인터럽트가 발생하면 중앙 처리 장치는 인터럽트 주소 테이블(리얼모드에서는 메모리의 첫 번째 1024 바이트에 위치한)에서 256가지 함수 중 하나(가리켜진)를 호출한다. 그러므로 플래그 레지스터를 푸시한 후에 인터럽트 함수를 직접 시작함으로써, far-call 명령어를 사용하는 것이 가능하다.

도스 소프트웨어 인터럽트 중에서 가장 유용한 것은 인터럽트 0x21이다. 여러 파라미터들을 레지스터에 넣고 이것을 호출함으로써, 다양한 입출력 작업이나 문자열 출력 등에 접근하는 등의 것들이 가능해 진다.[2]

대부분의 유닉스 시스템들과 그쪽 계열들은 인터럽트 0x80을 제외하고는 시스템 호출을 위한 소프트웨어 인터럽트를 사용하지 않는다. 이것은 커널 함수에 대응하는 32-bit 값을 EAX 레지스터에 넣고, INT 0x80을 실행하는 방식이다.

INT 3 편집

INT 3 명령어는 디버거가 실행중인 프로그램에 브레이크포인트를 설정하기 위하여 사용된다. 다른 INT 명령어들은 2 바이트를 사용하지만 이것은 명령어를 패치하는데 적합하게 1바이트를 사용한다. INT 3의 옵코드는 0xCC이다.[3]

같이 보기 편집

각주 편집

  1. “Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference Manual”. 2007년 7월 2일에 원본 문서에서 보존된 문서. 2007년 7월 13일에 확인함. 
  2. “Definition of: int 21”. 2012년 10월 7일에 원본 문서에서 보존된 문서. 2022년 1월 21일에 확인함. 
  3. 《Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B, and 3C》 (PDF) (PDF). Intel. 2013년 6월 [1997]. 325462-047US. 2013년 7월 2일에 확인함.