인라인 어셈블리 란 무엇입니까?
인라인 어셈블리 언어 또는 인라인 어셈블러라고도하는
인라인 어셈블리는 다른 언어의 함수 및 소스 코드에 직접 삽입되는 어셈블리 언어 코드 블록입니다. 이를 통해 프로그래머는 순수한 어셈블리 언어 블록을 프로그램의 나머지 부분이 비 합산 언어를 사용하는 프로그램에 삽입 할 수 있습니다. 능력은 C, C ++ 및 Pascal과 같은 일부 언어로 지원되지만 사용 된 특정 컴파일러의 기능이며 반드시 언어 표준의 일부는 아닙니다. 많은 경우, 인라인 어셈블리는 CPU (Central Processing Unit)의 특수 함수에 액세스하거나 코드를 최적화하거나 메모리 블리팅과 같은 매우 낮은 수준의 작업을 수행하는 데 사용됩니다. 특정 컴파일러 또는 프로그래밍 언어는 크로스 플랫폼 실행 파일 생성을 지원할 수 있지만 인라인 어셈블리 사용은 일반적으로 특정 어셈블리 지침을 사용하거나 아키텍트 일치 할 수있는 시스템으로 프로그램을 제한합니다.re.
언어 나 컴파일러가 인라인 어셈블리를 표준 소스 코드 파일에 포함시킬 수있는 몇 가지 방법이 있습니다. 가장 쉬운 방법 중 하나는 단순히 어셈블리 블록의 시작을 정의하는 것입니다. 그 후 모든 명령은 직접 어셈블리로 해석됩니다. 일부 통합 개발 환경 (IDES) 및 컴파일러는 실제로 인라인 코드가 프로그램 또는 기능에 정의 된 변수를 먼저 레지스터에로드하지 않고 사용하도록 허용합니다.
소스 파일 내에서 인라인 어셈블리가 정의되는 또 다른 방법은 전용 어셈블리 전용 기능을 사용하는 것입니다. 이 경우 인라인 코드는 일반적으로 컨트롤 루프 또는 반환 문과 같은 비 합산 코드와 결합 할 수 없습니다. 이러한 방식으로 구현할 때 인라인 함수는 일반적으로 로컬 변수를 사용하거나 값을 전달하기 위해 스택을 켜고 끄는 변수를 명시 적으로 푸시해야합니다.기능 측면.
인라인 어셈블리 코드의 가장 일반적인 용도 중 하나는 프로그램의 작은 세그먼트에 대한 PINPoint 최적화입니다. 인라인 코드가 어떻게 통합되는지에 따라, 이는 인라인 코드를 마무리하는 인간이 읽을 수있는 더 많은 언어 명령을 사용하여 매우 빠르고 효율적으로 작업을 직접 수행하는 것을 의미 할 수 있습니다. 또한 대상 시스템이 알려진 경우 코드는 프로그램을 훨씬 더 빨리 실행할 수있는 하드웨어 별 레지스터 및 명령을 사용할 수 있습니다.
인라인 어셈블리는 다른 방법이 실패하거나 시스템 오류를 일으킬 수있는 경우 운영 체제, CPU 또는 하드웨어 포트의 일부에 액세스하는 데 사용될 수 있습니다. 이것은 그래픽 카드의 프레임을 신속하게 변경하거나 특정 인터럽트 또는 하드웨어 포트로 직접 신호를 보내는 데 사용될 수 있습니다. 그러나 이러한 방식으로 어셈블리 코드를 사용하는 위험 중 하나는 작은 실수가 특정 시스템에서 예기치 않게 프로그램을 찾기가 어려울 수 있다는 것입니다.