전체 글15 IR코드의 구성요소(Module, Function, Block, Instruction) https://blog.naver.com/junwha0511/222190349558 앞선 글에서, Clang이 C++을 IR코드를 번역하면 여러개의 LLVM Pass가 IR코드에 추가적인 부분을 적용한다고 설명했었다. LLVM Pass를 작성하기 위해서는, 먼저 IR코드의 구조를 파악해야 한다. IR 코드의 구성요소는 Module, Function, Block, Instruction, 네가지로 구성된다. 위 그림에서 보이는 것과 같이 프로그램은 여러 모듈(Module)로 구성되어 있고, 각 모듈 내부에는 여러 함수(Function)가 있으며, 각 함수 내부에는 여러 블록(Block)이 있고, 각 블록의 내부에는 여러 명령(Instruction)이 존재한다. 1. 모듈(Module) 모듈은 한 파일.. 2021. 1. 26. 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. 스도쿠 5000개 모음 파이썬으로 스도쿠를 만들어보았습니다. (만드는 과정과 코드는 차후에 공개하도록 하겠습니다.) 100레벨마다 난이도가 올라가는 스도쿠입니다. 아래 링크에서 다운받으실 수 있습니다. https://junwha0511.blog.me/221702099879 2019. 11. 8. 이전 1 2 3 4 다음