call gate
-
x86-64 Assembly Language 5 Hello world와 System callLinux Development/Kernel 2021. 7. 29. 00:43
시스템 콜은 애플리케이션과 OS가 대화하는 가장 중요한 방법이다. 앞선 두 hello world 코드를 보면 물론 여러 가지가 다르지만 그중 시스템 콜을 이용하는데 의미 있는 차이를 보인다. 32bit 환경에서는 int라는 opcode(오피 코드, 명령 부분)와 0x80이라는 operand(데이터 부분)가 포함된 인스트럭션이 보인다. 64bit 환경에서는 syscall이라는 opcode만 보인다. 이 두 가지 코드는 모두 System Call을 이용하기 위한 코드들로서 하나는 32bit에서 고전적으로 쓰이는 트랩 게이트를 이용한 시스템 콜, 다른 하나는 64bit 환경에서 권장되는 MSRs(Modes Specific Registers) 시스템 콜 전용 레지스터들을 이용한 콜이다. 아래는 이에 대한 설명이..