미니 알아둬도 쓸모없는 애플관련 잡설
- Score_고동빈
- 조회 수 595
- 2019.10.30. 17:30
애플 앱 스토어에 올라가는 구현체는 네이티브 바이너리가 아닌 IR(bitcode)입니다.
... 이렇게만 말하면 당연히 이해를 못하실테니, 부연 설명을 하자면
애플이 주도적으로 미는 프로젝트중에 LLVM이 있습니다. 각종 컴파일러(코드를 다른 코드로 변환하는 프로그램)과 툴체인(바이너리 코드 생성시에 필요한 라이브러리 로딩등을 도와주는 라이브러리 모음집)을 하나로 묶은 거대한 프로젝트에요. 여러 언어들(C, Go, Swift, ...)을 모두 지원하는게 특징입니다.
LLVM은 크게 프런트엔드/미들엔드/백엔드라는 세 구성으로 이루어져 있습니다.
프런트엔드는 사용자가 작성한 고급 언어를 LLVM IR이라는 언어로 변경해주는 놈
미들엔드는 컴파일된 IR을 최적화 해주는 놈
백엔드는 최적화된 IR을 네이티브 바이너리(윈도우면 exe겠죠?)로 바꿔주는 놈
이고요.
이렇게 단계를 나눠놓음으로써, 여러 고급 언어와 여러 플랫폼을 유연하게 지원할 수 있게 된거죠.
애플은 이렇게 생성된 IR 코드를 제출받아서 플랫폼 변화에 좀더 여유롭게 대응하고, 자기들만의 최적화 기법을 적용하여 앱을 배포할 수 있답니다.
댓글
대충 아 완벽하게 이해했어 짤