Today Mini Learned :

기록하는 습관 들이기

ACTIVITY 39

[모각코] 활동 마무리

6회차 이후, pass만드는 부분을 마무리해보려고 한다. 빌드까지 완료했고 make가 제대로 동작하는 것을 확인했다. 5회차 결과와 같은 방법으로 이름과 코드만 살짝 바꿔 "Yamtest"라는 이름으로 이름만 다르게 새로 만들어서 해 보았다. 코드는 해당 깃허브의 skeleton을 참고했다 빌드를 했던 최상위 폴더인 llvm_tuto/에서 make를 하면, libYamtestPass.so 파일이 생긴 것을 확인할 수 있다.

[모각코] 6회차 결과 (200805)

llvm pass로 hello world 출력 (5회차에 이어서) ✔(아래 목표로 전환) pass skeleton을 통해 나만의 pass작성해보기 👉 마무리 글에서 이어서 해 볼것! 저번 주차에 만든 yampass... 여기 부분을 하면서 막혔다. gmake가 없어 make명령어로 하려고 했으나 make도 실패ㅠㅠ 오류 화면을 캡쳐해둬야 했는데 아쉽다. 대충 읽어보니 기존에 있던 helloworld 패스와 yampass가 충돌하는지 helloworld가 또 있다며 에러가 나는 내용이었다. 이 문제를 해결하려다 보니 같이 모각코를 하는 친구의 글을 보니 내가 빌드가 덜 된 것 같다는 것을 발견...! 따라서 지금 cmake부터 다시 하는 중이다. 이게 끝나면 우선, make가 잘 되는지 보고, yampas..

[모각코] 5회차 결과 (200729)

llvm pass 알아보기 ✔ llvm pass로 hello world 출력 llvm pass는 컴파일러에서 수행하는 변환과 최적화를 해 주며, 컴파일러 코드의 구조화 기법이라고 한다. 컴파일러의 부분들을 구현해 놓은 것 같다. 패스들은 패스라는 클래스를 재정의해서 기능을 구현할 수 있다고 하고, 패스의 작동 방식에 따라서 다양한 클래스들에서 상속이 가능한 듯 하다. 또한 패스에 제약 조건을 두고 효율적으로 패스를 실행하게 설정이 가능하다고 한다. (참고 : https://llvm.org/docs/WritingAnLLVMPass.html#introduction-what-is-a-pass) (4.0.0 버전 문서 : https://releases.llvm.org/4.0.0/docs/WritingAnLLVM..

[모각코] 5회차 목표 및 기록 (200729)

llvm pass 알아보기 llvm pass로 hello world 출력 5회차에는 4회차에 이어서 Clang을 변환하는 것을 계속 접근해보기로 했다. 4회차에 clang 설치를 해 두어서 이제 코드만 수정하면 될 거라고 생각했는데 생각보다 막막... 여쭤보니 LLVM Pass Framework이라고 클랭을 수정하는 것이 아니라 llvm pass를 만들어서 코드를 수정하거나 분석해야 한다고 한다... 완전 아무것도 모르는 상태에서 하다 보니까 엄청 헤메는 중이다ㅠㅠ 일단 https://llvm.org/docs/WritingAnLLVMPass.html#quick-start-writing-hello-world 이 글을 참고해서 hello world를 출력해 보는 것으로 방향을 변경했다. 버전이 달라서 걱정되..

[모각코] 3회차 결과 (200715)

Clang 작동 구조 파악 ❌ Clang 수정하여 간단한 출력이라도 내 보기 ❌ 이 페이지를 참고해서 (https://clang.llvm.org/docs/InternalsManual.html#how-to-add-an-expression-or-statement) 프린트를 하려면 Frontend부분을 수정해야 하는 것 같다. 또 이 페이지에서는 (https://clang.llvm.org/doxygen/index.html) Clang에서의 모든 파일을 확인할 수 있어 이 Frontend로 들어가서 cpp파일이 많았는데 이 중에 수정해야 하는 것 같다고 생각하며 putty를 열었었다. 근데 정작 수정해야 하는 파일이 어디있는지 못 찾겠다... llvm폴더는 있는데 다 뒤져봐도 clang 비슷한 글자도 안 나오는..