QEMU를 능가하는 x86-64 에뮬레이터 깜박임

깜박임-gcc

깜박임 실행 스크린샷

프로젝트가 최근에 뉴스가 깨졌습니다. Blink는 새로운 에뮬레이터를 개발 중입니다. x86-64 프로세서의 컴파일된 Linux 응용 프로그램을 실행할 수 있습니다. 에뮬레이트된 프로세서가 있는 가상 머신에서 정적으로.

e라고 언급되어 있다.주요 목표 프로젝트의 다른 운영 체제에서 x86-64 아키텍처용으로 컴파일된 Linux 프로그램을 실행할 수 있는 기능을 제공하는 것입니다. (macOS, FreeBSD, NetBSD, OpenBSD) 및 하드웨어 아키텍처가 다른 컴퓨터(x86, ARM, RISC-V, MIPS, PowerPC, s390x).

프로젝트 저장소에서 다음과 같이 깜박임을 설명합니다.

블링크는 서로 다른 운영 체제 및 하드웨어 아키텍처에서 정적으로 컴파일된 x86-64-linux 프로그램을 실행하는 가상 머신입니다. qemu-x86_64 명령과 동일한 작업을 수행하도록 설계되었습니다. 단, (a) 4mb 바이너리가 아닌 Blink는 ~160kb 공간만 차지합니다. (b) Blink는 GCC 에뮬레이션과 같은 일부 벤치마크에서 Qemu보다 2배 빠릅니다. 단점은 Blink에 Qemu만큼 많은 기능이 없다는 것입니다. Blink는 매우 작고 임시 프로그램을 훨씬 빠르게 실행하는 가상 머신을 원할 때 적합합니다. 이 도구의 동기에 대한 자세한 내용은 https://justine.lol/ape.html을 참조하십시오.

이 프로젝트는 Linux용 커밋 격리 메커니즘의 포트인 Cosmopolitan C 라이브러리와 Redbean 범용 실행 파일 시스템과 같은 개발 작성자가 개발했다는 ​​점을 언급할 가치가 있습니다.

기능면에서는 Blink는 qemu-x86_64 명령처럼 보입니다., 그러나 보다 컴팩트한 디자인과 상당한 성능 향상 측면에서 QEMU와 다릅니다.. 예를 들어, Blink 실행 파일은 qemu-x157_4의 경우 86MB 대신 64KB에 불과합니다. 성능면에서 GCC 에뮬레이터의 테스트 실행에서 Blink는 QEMU를 두 번 이겼습니다..

고성능을 보장하기 위해, JIT 컴파일러가 사용됩니다. 즉석에서 대상 플랫폼에 대한 소스 명령을 기계 코드로 변환합니다(지금까지 x86_64 및 aarch64만 JIT를 지원함).

표준 C 라이브러리 Cosmopolitan, Glibc 및 Musl로 컴파일된 ELF, PE(Portable Executables) 및 bin(Flat Executable) 형식의 실행 파일 에뮬레이터에서 직접 실행이 지원됩니다.

그 외에도 또한 Linux 시스템에 대한 XNUMX개 이상의 호출을 통합 지원한다는 점이 눈에 띕니다. fork() 및 clone()을 포함합니다. i8086, i386, SSE2, x86_64, SSE3, SSSE3, CLMUL, POPCNT, ADX, BMI2(MULX, PDEP, PEXT), X87, RDRND, RDSEED 및 RDTSCP 명령어 세트의 에뮬레이션이 지원됩니다.

또한, 프로젝트는 blinkenlights 유틸리티를 개발하고 있습니다. 다른 플랫폼에서 프로그램을 디버깅하고 프로그램 실행을 시각화하고 메모리 내용을 분석하기 위한 인터페이스를 제공합니다. 디버거의 기능 중 하나는 역방향 디버깅 모드(Reverse Debugging)를 지원하여 실행 기록으로 돌아가서 이전에 실행한 지점으로 돌아갈 수 있습니다.

blinkenlights는 모든 플랫폼에서 x86_64-linux 프로그램을 디버그하는 데 사용할 수 있는 TUI 인터페이스입니다. GDB와 달리 Blinkenlights는 프로그램 실행을 시각화하는 데 중점을 둡니다. 유니코드 IBM 코드 437페이지 문자를 사용하여 프로그램의 어셈블리 코드를 이동하면서 변경되는 XNUMX진 메모리 패널을 표시합니다. 이러한 메모리 패널은 마우스 휠로 스크롤하고 확대할 수 있습니다. Blinkenlights는 어셈블리 화면에서 휠을 스크롤하여 실행 기록을 되감는 리버스 디버깅도 지원합니다.

마지막으로, 이 프로젝트에 대해 자세히 알고 싶은 분들은 프로젝트 코드가 C(ANSI C11)로 작성되었으며 ISC 라이선스에 따라 배포된다는 사실을 알아야 합니다. 종속성 중 libc(POSIX.1-2017)만 필요합니다.

깜박임

블링크를 시도하는 데 관심이 있는 사람들은 컴파일이 매우 간단하고 소스 코드만 얻으면 다음 링크 또는 다음 명령을 입력하여 터미널에서 수행할 수 있다는 것을 알아야 합니다. :

git https://github.com/jart/blink.git

그런 다음 blik 디렉토리에 들어가 컴파일하기만 하면 됩니다.

cd blink

make -j4

Blink 작동 방식에 대해 더 알고 싶다면 다음에서 확인할 수 있습니다. 다음 링크.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.