동적 재컴파일
Dynamic recompilation| 프로그램 실행 |
|---|
| 일반적인 개념 |
| 코드의 종류 |
| 컴파일 전략 |
| 주목할 만한 런타임 |
| 주목할 만한 컴파일러 및 툴 체인 |
컴퓨터 과학에서 동적 재컴파일은 일부 에뮬레이터와 가상 머신의 기능으로, 시스템이 실행 중에 프로그램의 일부를 재컴파일할 수 있습니다.실행 중에 컴파일함으로써 생성된 코드를 프로그램의 런타임 환경을 반영하도록 맞춤화할 수 있으며, 기존 정적 컴파일러가 이용할 수 없었던 정보를 이용함으로써 보다 효율적인 코드를 잠재적으로 생성할 수 있습니다.
사용하다
대부분의 동적 재컴파일러는 런타임에 아키텍처 간에 기계 코드를 변환하는 데 사용됩니다.이는 레거시 게임 플랫폼의 에뮬레이션에서 종종 필요한 작업입니다.다른 경우 시스템은 Java 또는 같은 휴대용 프로그램 표현을 실행하기 위한 적응 최적화 전략의 일부로서 동적 재컴파일을 사용할 수 있다.NET 공용 언어 런타임 바이트 코드.또한 풀스피드 디버거는 동적 재컴파일을 사용하여 대부분의 최적화 기술 및 동적 스레드 마이그레이션 등의 기타 기능에서 발생하는 공간 오버헤드를 줄입니다.
임무들
다이내믹 재컴파일러가 수행해야 하는 주요 작업은 다음과 같습니다.
- 소스 플랫폼에서 기계 코드 읽기
- 대상 플랫폼의 기계 코드를 내보내는 중
다이내믹 재컴파일러는 다음과 같은 보조 작업을 수행할 수도 있습니다.
- 재컴파일된 코드의 캐시 관리
- 사이클 카운트 레지스터가 있는 플랫폼의 경과 사이클 카운트 업데이트
- 인터럽트 체크 관리
- GPU 등의 가상화된 지원 하드웨어에 대한 인터페이스 제공
- 타깃 하드웨어에서 효율적으로 실행되도록 고급 코드 구조 최적화(아래 참조)
적용들
- 대부분의 Java 가상 시스템은 동적 재컴파일 기능을 제공합니다.
- x86에 탑재된 Mac OS X용 Apple의 Rosetta는 파워를 발휘합니다.x86 아키텍처에서 실행되는 PC 코드.
- Power에서 680x0 코드를 실행하기 위해 기존 Mac OS에서 사용된 Mac 68K 에뮬레이터의 최신 버전PC 하드웨어
- Python 전용 컴파일러 Psyco.
- HP Dynamo 프로젝트는 투명한 바이너리 다이내믹 옵티마이저의 예입니다.[1]
- Dynamo RIO는 ARM, x86-64 및 IA-64(Itanium) 명령 [2][3]집합과 함께 작동하는 Dynamo의 오픈 소스 후계자입니다.
- Vx32 가상 시스템은 동적 재컴파일을 사용하여 안전한 애플리케이션 플러그인을 위한 OS 독립적인 x86 아키텍처 샌드박스를 생성합니다.
- PowerPC에서 x86 코드를 실행하기 위해 사용되는 Mac용 Microsoft Virtual PC.
- FreeKEYB는 많은 조작성을 향상시킨 국제적인 DOS 키보드 및 콘솔 드라이버로 자체 수정 코드와 동적 데드 코드 제거를 사용하여 사용자 구성(일부 기능, 언어, 레이아웃)과 실제 런타임 환경(OS 버전, 로드 드라이버, 기본 하드웨어)에 따라 메모리 내 이미지를 최소화하였습니다.의존관계 자동 해결, 바이트 수준의 세분화에 관한 코드 섹션의 동적 재배치 및 재결합, 소스 코드로 제공되는 의미 정보, 어셈블리 중 특수 도구에 의해 생성된 재배치 정보 및 로드 [4]시 얻은 프로파일 정보에 기반하여 운영 스트링의 최적화를 수행합니다.
- Xbox 360의 하위 호환성 기능(즉, 원래 Xbox용으로 작성된 게임 실행)은 동적 재컴파일을 사용하는 것으로 널리 알려져 있습니다.
- Apple의 Rosetta 2 for Apple silicon은 x86-64 기반 프로세서를 위해 컴파일된 많은 애플리케이션을 Apple silicon에서 실행할 수 있도록 합니다.
에뮬레이터
- 소니 플레이스테이션2 [5]에뮬레이터인 PCSX2에는 슈퍼VU의 후속 모델인 마이크로VU라는 재컴파일러가 있다.
- 닌텐도 게임큐브 에뮬레이터인 GCemu.[6]
- MSX용 닌텐도 게임보이 에뮬레이터인 [7]GEM은 최적화 다이내믹 리컴파일러를 사용합니다.
- 닌텐도 DS 에뮬레이터인 DeSmuME에는 [8]dynarec 옵션이 있습니다.
- 소니 플레이스테이션 포터블 에뮬레이터인 소이위즈의 PSP에는 [9]다이너렉 옵션이 있다.
- 멀티플랫폼 닌텐도 64 [10]에뮬레이터인 Mupen64Plus.
- Yabause, 다중 플랫폼 Saturn 에뮬레이터.[11]
- 멀티플랫폼 PlayStation Portable 에뮬레이터인 PPSSPP는 기본적으로 [12]JIT 다이내믹 재컴파일러를 사용합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "HP Labs' technical report on Dynamo".
- ^ "Archived copy". Archived from the original on 2019-09-05. Retrieved 2016-04-12.
{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크) - ^ "DynamoRIO". GitHub. 2021-10-15.
- ^ Paul, Matthias R.; Frinke, Axel C. (1997-10-13) [first published 1991], FreeKEYB - Enhanced DOS keyboard and console driver (User Manual) (v6.5 ed.)
- ^ "PCSX 2".
- ^ petebernert. "GCemu". SourceForge.
- ^ "Gameboy Emulator for MSX The New Image". GEM. Retrieved 2014-01-12.
- ^ "DeSmuME v0.9.9".
- ^ Publicado por Carlos Ballesteros Velasco (2013-07-28). "Soywiz's PSP Emulator: Release : Soywiz's Psp Emulator 2013-07-28 (r525)". Pspemu.soywiz.com. Retrieved 2014-01-12.
- ^ Mupen64Plus
- ^ "SH2".
- ^ "PPSSPP - PPSSPP - PSP emulator for Android, Windows, Linux, iOS, MacOSX". ppsspp.org. Retrieved 2021-11-17.