상위 질문
타임라인
채팅
관점

동적 재컴파일

위키백과, 무료 백과사전

Remove ads

컴퓨터 과학 에서 동적 재컴파일은 일부 에뮬레이터가상 머신의 기능으로, 시스템은 실행 중에 프로그램의 일부를 재컴파일 할 수 있다. 실행 중에 컴파일함으로써 시스템은 프로그램의 런타임 환경을 반영하도록 생성된 코드를 조정할 수 있으며 잠재적으로 기존의 정적 컴파일러 에서 사용할 수 없는 정보를 활용하여 보다 효율적인 코드를 생성할 수 있다.

용도

대부분의 동적 재컴파일러는 런타임 시 아키텍처 간에 기계 코드를 변환하는 데 사용된다. 이것은 레거시 게임 플랫폼의 에뮬레이션에서 종종 필요한 작업이다. 다른 경우에 시스템은 적응형 최적화 전략의 일부로 동적 재컴파일을 사용하여 Java 또는 .NET 공용 언어 런타임 바이트코드와 같은 프로그램을 실행할 수 있다. 디버거는 또한 동적 재컴파일을 활용하여 대부분의 역최적화 기술 및 동적 스레드 마이그레이션 과 같은 기능에서 발생하는 공간 오버헤드를 줄인다.

작업

동적 재컴파일러가 수행해야 하는 주요 작업은 다음과 같다.

  • 소스 플랫폼에서 기계 코드 읽기
  • 대상 플랫폼에 대한 기계어 코드 방출

동적 재컴파일러는 일부 보조 작업도 수행할 수 있다.

  • 재컴파일된 코드의 캐시 관리
  • 사이클 카운트 레지스터가 있는 플랫폼에서 경과된 사이클 카운트 업데이트
  • 인터럽트 검사 관리
  • 예를 들어 GPU 와 같은 가상화된 지원 하드웨어에 대한 인터페이스 제공
  • 대상 하드웨어에서 효율적으로 실행되도록 상위 수준 코드 구조 최적화(아래 참조)

애플리케이션

  • 많은 JVM(Java Virtual Machine)에는 동적 재컴파일 기능이 있다.
  • x86의 Mac OS X 용 Apple의 RosettaPowerPC 코드가 x86 아키텍처 에서 실행되도록 한다.
  • PowerPC 하드웨어에서 680x0 코드를 실행하기 위해 클래식 Mac OS에서 사용되는 최신 버전의 Mac 68K 에뮬레이터.
  • Python 전용 컴파일러Psyco.
  • 투명한 바이너리 동적 최적화 프로그램 의 예인 HP Dynamo 프로젝트.[1]
  • ARM, x86-64 및 IA-64 (Itanium) 명령어 세트와 함께 작동하는 Dynamo의 오픈 소스 후속 제품인 DynamoRIO.[2][3]
  • Vx32 가상 머신은 동적 재컴파일을 사용하여 안전한 애플리케이션 플러그인을 위한 OS 독립적인 x86 아키텍처 샌드박스를 생성한다.
  • PowerPC에서 x86 코드를 실행하는 데 사용되는 Mac용 Microsoft Virtual PC.
  • 사용자 구성(선택한 기능, 언어, 레이아웃) 및 실제 런타임 환경(OS 변형)을 기반으로 메모리 내 이미지를 최소화하기 위해 자체 수정 코드 및 동적 데드 코드 제거를 활용하여 사용 편의성이 향상된 국제 DOS 키보드 및 콘솔 드라이버인 FreeKEYB 에서 버전, 로드된 드라이버, 기본 하드웨어), 종속성 자동 해결, 바이트 수준 세분성에서 코드 섹션을 동적으로 재배치 및 재결합, 소스 코드에 제공된 의미 정보를 기반으로 opstring 최적화, 조립 중 특수 도구에 의해 생성된 재배치 정보 및 획득한 프로필 정보 로드 시간에 동적 재컴파일을 사용한다.
  • Xbox 360의 이전 버전과의 호환성 기능(예: 원래 Xbox 용으로 작성된 게임 실행)은 동적 재컴파일을 사용하는 것으로 널리 알려져 있다.
  • Apple 실리콘용 Apple의 Rosetta 2는 x86-64 기반 프로세서용으로 컴파일된 많은 응용 프로그램이 Apple 실리콘에서 실행되도록 변환되도록 허용한다.

에뮬레이터

  • [4] PlayStation 2 에뮬레이터인 PCSX2 에는 "SuperVU"의 후속 제품인 "microVU"라는 재컴파일러가 있다.
  • GCemu,[5] GameCube 에뮬레이터.
  • GEM,[6] MSXGame Boy 에뮬레이터는 최적화 동적 재컴파일러를 사용한다.
  • Nintendo DS 에뮬레이터인 DeSmuME[7] 에는 dynarec 옵션이 있다.
  • Soywiz의 Psp[8] PlayStation Portable 에뮬레이터에는 dynarec 옵션이 있다.
  • Mupen64Plus, 멀티 플랫폼 Nintendo 64 에뮬레이터.[9]
  • 멀티 플랫폼 Saturn 에뮬레이터 Yabause.[10]
  • 멀티 플랫폼 PlayStation Portable 에뮬레이터인 PPSSPP는 기본적으로 JIT 동적 재컴파일러를 사용한다.[11]

같이 보기

각주

외부 링크

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads