며칠 전, 지터(Jitter) 프로젝트가 공식적으로 GNU 프로젝트 산하 프로젝트가 되었으며 , 이제 GNU 인프라를 사용하고 프로젝트 요구 사항에 따라 GNU 지터라는 이름으로 개발되고 있다는 발표가 있었습니다.
Jitter에 익숙하지 않은 분들을 위해 설명드리자면, Jitter는 임의의 프로그래밍 언어 설계에 대해 이식성이 뛰어나고 매우 빠른 가상 머신을 생성할 수 있도록 해주는 구현체입니다 . 이러한 가상 머신에서 실행되는 코드의 실행 성능은 인터프리터보다 훨씬 뛰어나며 네이티브 컴파일 코드에 근접합니다.
Jitter는 이식성이 높으며 올바른 VM은 컴파일러와 표준 C 라이브러리만 있는 모든 플랫폼에서 정확히 동일한 동작을 나타냅니다. 그러나 GCC가 있는 ELF 시스템에서 지원되는 아키텍처(현재: M68k, MIPS, PowerPC, RISC-V, SPARC, x86_64; 64단계: Aarch390, Alpha, ARM, SXNUMXx) 중 하나를 사용하면 성능이 향상됩니다. 물론 Jitter는 GNU 프로젝트의 일부이며 주로 GNU 시스템에서 사용하도록 설계되었습니다.
Jitter는 가상 머신에서 지원하는 명령어에 대한 고수준 명세를 입력으로 받아들이고 , 출력으로 주어진 명령어를 실행할 수 있는 가상 머신의 즉시 사용 가능한 구현체를 생성합니다 .
명세에 있는 각 명령어의 논리는 C 코드로 명시되어 있습니다. 추가 기능으로는 C 언어에서 구현하기 어렵고 동적 프로그래밍 언어에 내재된 조건 분기 연산 지원(예: 레이블 값 검사 및 오버플로 검사)이 포함됩니다.
Jitter 런타임은 또한 동적으로 유형이 지정된 언어 및 오버플로 검사가 포함된 산술에 필요한 값 태그 검사와 같이 C만 사용하여 구현하기 어려운 조건부 분기 작업을 효율적으로 지원합니다. VM 코드는 대부분의 경우 효율적인 하드웨어 메커니즘에 의존하는 프로시저 호출 및 반환 작업에 액세스합니다.
생성된 가상 머신은 소수의 어셈블리 코드가 포함된 C 언어로 작성됩니다 . 다양한 최적화 및 배포 방식을 선택할 수 있는 구성 옵션이 제공되므로 가상 머신을 다른 플랫폼으로 쉽게 마이그레이션할 수 있습니다.
레지스터, 스택 및 조인 실행 아키텍처의 사용은 물론 CPU 하드웨어 레지스터의 가상 머신 데이터 구조를 미러링하고 가비지 수집기를 연결하는 기능을 지원합니다.
생성된 코드에는 가상 머신에서 코드를 동적으로 교체하고 실행하는 간단한 C API와 가상 머신의 텍스트 파일에서 코드를 별도로 실행하는 컨트롤러 프로그램이 포함됩니다.
생성된 C 코드는 조건이 엄격하며 다양한 정교함의 다양한 배포 기술을 사용하여 실행되도록 구성할 수 있습니다. 가장 효율적인 디스패치 기술은 Jitter에서 제공하는 일부 아키텍처별 어셈블리 지원에 의존하지만 VM별 어셈블리 지원은 아닙니다. 모든 디스패치 모델이지만 하나는 GNU C 확장을 기반으로 합니다.
마지막으로, 더 자세히 알고 싶으신 분들을 위해 말씀드리자면, Jitter의 원본 코드는 C 언어로 작성되었으며 GPLv3 라이선스 하에 제공됩니다. 다음 링크에서 더 자세한 정보를 확인하실 수 있습니다.
지터를 얻는 방법?
Jitter를 테스트하는 데 관심이 있는 사람들은 터미널을 열고 다음 명령을 입력하여 소스 코드를 얻을 수 있습니다.
git clone http://git.ageinghacker.net/jitter
이 작업이 완료되면 이제 코드가 있는 폴더로 이동하여 구성 스크립트를 포함하여 Jitter를 구성하고 빌드하는 데 필요한 파일을 생성하는 데 사용되는 시작 스크립트를 실행할 것입니다. 우리는 이것을 다음과 같이 수행합니다.
cd jitter && ./bootstrap
Jitter는 구성 및 구성에 대한 GNU 규칙을 따르고 소스 디렉토리에서 구성을 지원한다는 점을 언급할 가치가 있습니다. 실제로 교차 컴파일을 지원하고 에뮬레이터를 통해 교차 컴파일에서 테스트 스위트를 실행하는 것까지 지원합니다.
./configure && make
마지막으로 실행하려면 다음을 입력하십시오.
make check