본문 바로가기

전체 글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.