시스템2 LLVM 컴파일러는 무엇일까? LLVM은 C와 C++과 같은 native language를 컴파일하는 단계에서 컴파일 중간에 코드의 일부를 변경하거나 읽어내는 Pass를 적용하는 컴파일러이다. 즉, 특정 코드들에 대해 일관되게 어떠한 처리를 하고 싶을 때 LLVM을 쓸 수 있다. LLVM의 구조는 크게 프론트엔드(Front-end)-LLVM Optimizer-백엔드(Back-end)로 나뉜다. LLVM이 프론트엔드에서 LLVM Optimizer로 넘어갈 때 중간 단계 표현(IR, Intermediate Representation)을 사용하는데, 이것을 줄여서 IR 코드라고 부른다. 먼저 프론트엔드에서 Native Language를 IR 코드로 번역하면, 여러개의 Pass가 이 IR 코드에 여러가지 사항을 적용하면서 최종.. 2021. 1. 26. LLVM 시작 이번 학기에 나는 전공과목인 객체지향프로그래밍(OOP)를 듣고 있었는데, 교수님께서 연구를 해볼 생각이 있냐고 물어보셨다. 처음에는 내가 관심이 있던 분야인 시스템이 아닌 보안 연구실이라 조금 많이 망설여졌지만, 시스템 보안 분야에 대해 배울 수 있는 좋은 기회라고 생각해 들어오게 되었다. 우리 연구실은 S2 Lab이다. 아직까지 석사/박사생은 없고, 이제 막 학부생들을 뽑으셔서 구성하신 초기랩 단계이다. 꼭 많이 배워서 좋은 논문을 써보고 싶다. 연구 주제는 밝힐 수 없지만, 나는 시스템 보안을 연구하기 위해 LLVM을 공부해야 한다. 그런데 모든 자료가 영어라서 내가 잘 이해했는지 확인하기 위해, 그리고 다른 사람들이 LLVM을 쉽게 접할 수 있도록 블로그에 글을 작성해보고자 한다. .. 2021. 1. 26. 이전 1 다음