GNU 라이트닝

GNU 라이트닝(GNU lightning)은 실행 시간에 어셈블리어 코드를 생성하기 위한 자유 소프트웨어 라이브러리다. 2019년 9월에 출시된 버전 2.1.3은 SPARC (32비트), X86 (32 및 64비트), MIPS, ARM (32 및 64비트), ia64, HPPA, 파워PC (32비트), 알파, S390 및 RISC-V (64비트)용 백엔드를 지원한다.

 다른 라이브러리 대비 장점 
GNU 라이트닝이 제공하는 기능들은 JIT 컴파일에 유용하게 쓰인다. LLVM이나 libJIT와 같은 라이브러리와 비교했을 때, GNU 라이트닝은 SPARC와 MIPS 아키텍처에 느슨하게 기반을 둔 표준화된 RISC 어셈블리어로부터 대상 아키텍처의 기계어로 어셈블하기 위한 저수준 인터페이스만을 제공한다.

 단점 
레지스터 할당, 데이터 흐름 분석, 제어 흐름 분석 또는 프로그램 최적화를 제공하지 않는다.
2.x 버전부터는 표준화된 각 명령어를 하나씩 생성하는 대신 중간 그래프를 통해 코드를 생성한다. 이러한 변경을 통해 레지스터 할당 및 데드 코드 제거와 같은 명령어 간 최적화가 가능해졌다.

 명령어 집합 
GNU 라이트닝의 명령어 집합은 기존 RISC 아키텍처에 느슨하게 기반을 두고 있다.

 자료형 
필요한 경우 명령어는 다음 9가지 자료형으로 데이터를 처리한다:

 자료형 C 언어 대응 c signed char uc unsigned char s short us unsigned short i int ui unsigned int l long f float d double

 GNU 라이트닝을 사용하는 프로젝트 
GNU 스몰토크, GNU 가일, 및 CLISP는 JIT 컴파일을 위해 GNU 라이트닝을 사용한다. GNU 라이트닝은 처음에 GNU 스몰토크의 바이트코드에서 네이티브 코드로의 동적 변환기에 사용될 도구로 개발되었다. GNU 가일 2.9.2 이상 버전은 GNU 라이트닝 2.x가 명령어 간 최적화에 더 많은 복잡성을 할애하기 때문에, 이를 사용하는 대신 GNU 라이트닝 1.4에 기반한 자체 포크를 네이티브 코드 생성에 사용한다.

 내용주 

 각주 

 외부 링크 
 자유 소프트웨어 디렉터리의 GNU 라이트닝

분류:GNU 프로젝트 소프트웨어