본문 바로가기

시스템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.