2009-04-07 5 views
1

학교에서 수석 프로젝트를위한 컴파일러를 개발 중이고 AS (GNU 어셈블러)를 사용하여 어셈블하고 있습니다. 모든 테스트가 상당히 성공적 이었지만, 인터럽트 목록은 테스트 코드와 일치하거나 작동하지 않는 것으로 보입니다.i486-linux-gnu 명령어 집합에 대한 인터럽트 목록은 어디에서 찾을 수 있습니까?

AS의이 버전에 대한 관련 정보 :

GNU 어셈블러 2.17 데비안 GNU/리눅스 저작권 2005 자유 소프트웨어 재단, 주식 이 프로그램은 자유 소프트웨어입니다 GNU 일반 공중 사용 허가서에 따라 배포 할 수 있습니다. 이 프로그램에는 아무런 보증이 없습니다. 이 어셈블러는 'i486-linux-gnu'의 타겟을 위해 설정되었습니다.

+0

왜 인터럽트를 처리해야합니까? 인터럽트 목록이 아니라 시스템 콜 목록을 의미하지 않습니까? –

답변

0

IMHO 인터럽트 방식은 하드웨어에 따라 달라집니다. 리눅스 커널이 당신이 목표로 삼고있는 하드웨어의 인터럽트를 다루는 방법을 배우는 것은 교육적 일 수 있습니다.

2

리눅스는 DOS와 같은 방법으로 시스템 호출에 인터럽트를 사용하지 않습니다. 아키텍처 의존적 인 방법을 사용하여 x86에서 int 0x80이 될 수 있지만 현대 (Pentium +) CPU는 SYSENTER 명령어를 사용해야합니다. 다른 소프트웨어 인터럽트는 사용되지 않습니다.

일반적으로 어셈블리 언어로도 C 라이브러리를 사용하고 싶기 때문에 걱정하지 않아도됩니다.

3

리눅스에서는 80h의 인터럽트를 사용합니다. 해당 인터럽트가 해당하는 syscall은 this table에 있습니다.