INT(x86 명령)
INT (x86 instruction)INT는 소프트웨어 인터럽트를 생성하는 x86 프로세서에 대한 어셈블리 언어 명령이다.바이트 값으로 포맷된 인터럽트 번호를 사용한다.[1]
조립 언어로 작성될 때 지시사항은 다음과 같이 작성된다.
INT X
어디에X
생성해야 하는 소프트웨어 인터럽트(0-118).
기계 이항 산술의 관례대로 인터럽트 번호는 흔히 접두사 0x 또는 접미사 h로 표시할 수 있는 16진법 형태로 쓰여진다.예를 들면.INT 13H
20번째 소프트웨어 인터럽트를 생성한다(0x13은 16진수 표기법인 19번 19번이고 카운트는 0으로 시작됨). 따라서 인터럽트 테이블의 20번째 벡터가 가리키는 기능이 실행되게 된다.
리얼 모드
소프트웨어 인터럽트를 생성할 때 프로세서는 인터럽트 주소 테이블이 가리키는 256 기능 중 하나를 호출하는데, 이 기능은 실제 모드에 있는 동안 처음 1024바이트의 메모리에 위치한다(인터럽트 벡터 참조).따라서 플래그 레지스터를 누른 후 인터럽트 기능을 수동으로 시작하기 위해 원콜 명령을 사용하는 것이 전적으로 가능하다.
가장 유용한 DOS 소프트웨어 인터럽트 중 하나는 인터럽트 0x21이었다.레지스터(대부분 ah 및 al)에서 다른 파라미터로 호출하면 다양한 IO 작업, 문자열 출력 등에 액세스할 수 있다.[2]
대부분의 유닉스 시스템과 파생상품은 시스템 호출에 사용되는 인터럽트 0x80을 제외하고 소프트웨어 인터럽트를 사용하지 않는다.이는 커널 함수에 해당하는 32비트 값을 프로세서의 EAX 레지스터에 입력한 다음 INT 0x80을 실행함으로써 이루어진다.
INT3
INT3 명령어는 코드 중단점을 설정하기 위해 실행 중인 프로그램에서 명령을 일시적으로 대체하기 위해 디버거가 사용하도록 정의된 1바이트 명령이다.보다 일반적인 INT XXh 명령은 2바이트로 인코딩된다.따라서 1바이트 길이일 수 있는 패치 적용 지침서에 사용하기 적합하지 않다. 자세한 내용은 SIGTRAP를 참조하십시오.
INT3의 opcode는0xCC
, INT에 대한 opcode와 반대로immediate8어느 것이0xCD immediate8
. 헌신적인 사람부터0xCC
opcode에는 디버깅을 위해 원하는 특수 속성이 몇 가지 있는데, 이는 INT3의 일반적인 2바이트 opcode에 의해 공유되지 않으며, 조립자는 일반적으로 일반 opcode를 생성하지 않는다.0xCD 0x03
니모닉에서 opcode.[1]
INO
INT 지침은 또 다른 1바이트 명령이다.이 opcode를 실행할 때 오버플로 플래그가 설정될 때 트리거되는 조건부 인터럽트다.이것은 인터럽트 #4를 암시적으로 나타낸다.
INT에 대한 opcode는0xCE
그러나 x86-64 모드에서는 사용할 수 없다.
참고 항목
참조
- ^ a b Intel® 64 and IA-32 Architectures Software Developer’s Manual (PDF). Vol. 2. Intel Corporation. September 2016. p. 3-457. Retrieved 2020-02-19.
- ^ 정의: int 21