복붙노트

[SCALA] 어떻게 스칼라는 바이트 코드를 생성? ASM과 같은 몇 가지 라이브러리를 사용하거나 직접 바이너리 쓰기?

SCALA

어떻게 스칼라는 바이트 코드를 생성? ASM과 같은 몇 가지 라이브러리를 사용하거나 직접 바이너리 쓰기?

나는 어떻게 스칼라 생성 바이트 코드는 ASM과 같은 몇 가지 라이브러리를 사용합니까, 궁금 해요? 아니면 그냥 쓰기 바이너리 성능을 .class 파일을 하는가?

해결법

  1. ==============================

    1.JVM - 1.5 - 대상 : 2.10 스칼라 컴파일러는 -target부터 지원 된 바이트 코드를 방출 ASM 4를 사용 JVM-1.6 및 -target : JVM - 1.7

    JVM - 1.5 - 대상 : 2.10 스칼라 컴파일러는 -target부터 지원 된 바이트 코드를 방출 ASM 4를 사용 JVM-1.6 및 -target : JVM - 1.7

    백엔드의 구현 측면에 설명되어 있습니다 :

    바이트 코드의 이미 터 (GenASM는, 소스 아래 링크) 방문 컨트롤 흐름 이전 단계에 의해 만들어 그래프 (CFG), 직접 방출 된 클래스로 스트리밍 ASM의 API를 사용합니다 :

    https://github.com/scala/scala/blob/master/src/compiler/scala/tools/nsc/backend/jvm/GenASM.scala

    일이 지금 작동하는 방식 때문이다. 실험 가능성의 영역에서, 나는 (다음 메모리에 빌드 된 클래스에 나무 ASM API를 사용하여)가 직접 CFG 및 방문 스칼라 추상 구문 트리를 구축 건너 뜁니다 때문에 부분적으로 빠르게 방출 실험 바이트 코드에 근무했습니다. 자세한 사항 :

    https://github.com/magarciaEPFL/scala/blob/GenBCodeOpt/src/compiler/scala/tools/nsc/backend/jvm/GenBCode.scala

  2. ==============================

    2.외모가 자바 바이트 코드로 수동 변환 후 일부 중간 코드를 생성하고있는 것처럼 또는 .net MSIL

    외모가 자바 바이트 코드로 수동 변환 후 일부 중간 코드를 생성하고있는 것처럼 또는 .net MSIL

    여기 컴파일러의 좋은 개요 : https://wiki.scala-lang.org/display/SIW/Overview+of+Compiler+Phases

  3. from https://stackoverflow.com/questions/13380807/how-is-scala-generating-byte-code-using-some-libraries-like-asm-or-write-binar by cc-by-sa and MIT license