EveryDay.DevUp

[Unity] 컴파일 (JIT, AOT ) 본문

Unity

[Unity] 컴파일 (JIT, AOT )

EveryDay.DevUp 2020. 5. 6. 22:32

 

Unity에서 C#이 기계어로 변화는 과정

 

Unity에서 사용하는 C#은 사람이 이해하기 쉽고 편하게 만들어진 프로그래밍 언어. 이를 고급언어라고 한다.

하지만 컴퓨터는 사람의 언어를 그대로 이해할 수 없고, 1과0의 데이터만을 이해할 수 있다. 사실 1과0이라는 글자도 사람이 이해하기 쉽게 수로 표시한 것으로 실상 컴퓨터는 전기 신호의 ON/OFF 만으로 동작한다.

고급언어를 기계가 이해할 수 있는 저급 언어로 변경하기 위해서는 일련의 과정이 필요한데

1. Mono Framework를 통해 IL ( 공통 중간 언어 )로 변환하여 플랫폼의 종속이지 않게 변환됨

2. IL은 Mono를 통해 JIT ( Just in time 으로 실행 중 필요할때 마다 IL의 내용을 기계어로 변환 ) 컴파일 되어 앱이 실행

또는 IL2CPP를 통해 AOT ( Ahead of time 플랫폼에 맞는 기계어로 실행전에 변환 ) 컴파일 되어 앱이 실행

Unity에서는 2가지의 컴파일을 지원

 

 

하지만 iOS환경에서 JIT 를 사용할 때에 문자가 되기 때문에 IL2CPP만 사용이 가능하고, 성능적인 측면에서도 IL2CPP가 좋음

참고자료

https://blogs.unity3d.com/kr/2015/09/22/kr-csharp-compile-il2cpp/

 

C# 컴파일 그리고 il2cpp - Unity Technologies Blog

이글은 il2cpp를 이해하기전에, C#의 컴파일 과정을 설명하는 글입니다. 사실 il2cpp가 나온지 꽤 되서, 저보다 더 자세히 아시는 분들도 많을꺼라 생각됩니다. 이 블로그는 아직 il2cpp를 잘 모르는, �

blogs.unity3d.com

https://namu.wiki/w/%EC%96%B4%EC%85%88%EB%B8%94%EB%A6%AC%EC%96%B4

 

어셈블리어 - 나무위키

이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다. 나무위키는 백과사전이 아니며 검증되지 않았거나, 편향적이거나, 잘못된 서술이 있을 수 있습니다. 나무위키는 위키위키입니다. 여러분이 직접 문서를 고칠 수 있으며, 다른 사람의 의견을 원할 경우 직접 토론을 발제할 수 있습니다.

namu.wiki

https://gamedevforever.com/198

 

유니티 엔진의 멀티플랫폼 심장 Mono

1. 모노란 무엇인가? 유니티 엔진으로 스크립트를 코딩하다보면 MonoDeveloper라는 것이 있습니다. 편집기 인데 좀 유니티와는 다른 느낌에다가 닷넷툴같은 느낌을 주면서 닷넷이라고 보기엔 먼가 좀 이상하고 머..

gamedevforever.com