LLVM과 Java 바이트 코드의 차이점은 무엇입니까?
LLVM과 Java (바이트 코드)의 차이점을 이해하지 못합니다. 무엇입니까?
-edit- '그것들은 무엇입니까'나는 LLVM과 자바가 아닌 LLVM과 자바 (바이트 코드)의 차이점을 의미합니다.
Java가 아닌 JVM을 의미한다고 가정합니다.
LLVM은 저수준 레지스터 기반 가상 머신입니다. 기본 하드웨어를 추상화하고 컴파일러 백엔드 (머신 코드 생성)와 프런트 엔드 (파싱 등) 사이에 명확한 선을 그리도록 설계되었습니다.
JVM은 훨씬 더 높은 수준의 스택 기반 가상 머신입니다. JVM은 가비지 콜렉션을 제공하고 오브젝트 및 가상 메소드 호출 등의 개념을 가지고 있습니다. 따라서 JVM은 언어 상호 운용성을 위해 훨씬 높은 수준의 인프라를 제공합니다 (Microsoft의 CLR과 매우 유사).
(C 위에 구축 할 수있는 것처럼 LLVM을 통해 이러한 추상화를 구축 할 수 있습니다.)
이 질문이 잘못된 발을 내 디딘 것은 너무 나쁩니다. 더 자세한 비교를 위해 찾아 왔습니다.
JVM 바이트 코드와 LLVM 비트 코드의 가장 큰 차이점은 JVM 명령어는 스택 지향적 인 반면 LLVM 비트 코드는 그렇지 않다는 것입니다. 즉, JVM 바이트 코드는 값을 레지스터에로드하는 대신 스택에 값을로드하고 여기에서 값을 계산합니다. 이것의 장점은 컴파일러가 레지스터를 할당 할 필요가 없다는 것입니다.하지만 확실하지 않습니다.
LLVM 비트 코드는 머신 레벨 코드에 더 가깝지만 특정 아키텍처에 의해 제한되지 않습니다. 예를 들어, LLVM 비트 코드는 임의의 수의 논리 레지스터를 사용할 수 있다고 생각합니다. LLVM에 더 익숙한 사람이 여기서 말할 수 있습니까?
Java는 "JIT (Just in Time)"실행 수단으로 JVM을 사용하는 프로그래밍 언어 인 반면 LLVM은 기존 언어에 대한 새로운 언어 및 프런트 엔드를 개발하기위한 컴파일러 구성 키트입니다. LLVM 에는 JIT 엔진이 있지만 필요하지 않으면 사용할 필요가 없습니다. JIT 실행을 사용하는 대신 LLVM 어셈블러, 바이트 코드 또는 플랫폼 별 어셈블러를 버릴 수 있습니다.
참고 URL : https://stackoverflow.com/questions/454720/what-are-the-differences-between-llvm-and-java-bytecode
'IT박스' 카테고리의 다른 글
| 콜백이 반환 될 때까지 "대기"하는 방법은 무엇입니까? (0) | 2020.11.15 |
|---|---|
| 속성에 대한 잠재적 자식 요소 및 특성을 사용하여 사용자 지정 web.config 섹션을 어떻게 정의합니까? (0) | 2020.11.15 |
| 브랜치가 생성 된 트렁크에서 개정 찾기 (0) | 2020.11.15 |
| C #에서 속성을 재정의 할 수 있습니까? (0) | 2020.11.15 |
| 모든 것이 "최신"상태 인 경우에도 git이 수신 후 후크를 실행하도록합니다. (0) | 2020.11.15 |