디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

LLVM IR 소개 (일종의 통합 가상 어셈블리)

나르시갤로그로 이동합니다. 2025.11.24 14:34:57
조회 35 추천 0 댓글 0

? LLVM IR 소개

LLVM IR(Intermediate Representation)은 LLVM 프로젝트의 핵심 요소로, 다양한 언어와 아키텍처를 연결하는 가상 중간 언어입니다. 내부 표현으로 사용되지만, 사람이 직접 작성하거나 기계가 생성할 수 있으며, 새로운 언어 개발에도 활용됩니다. 


1. LLVM 툴체인 필요함

LLVM IR을 다루려면 LLVM 툴체인이 필요합니다.
- clang : C/C++ 등의 소스를 IR로 변환
- llc : IR을 특정 아키텍처의 어셈블리로 변환
- opt : IR 최적화 패스 적용
- llvm-link : 여러 IR 모듈을 하나로 통합 

참고: 일반적으로 Clang을 설치하면 LLVM 툴체인 전체가 함께 설치됩니다. 


2. 여러 어셈블리를 통합할 수 있는 가상 중간 언어

LLVM IR은 흔히 “portable 어셈블리 language”라고 불립니다.
- CPU 아키텍처에 종속되지 않고, x86, ARM, RISC-V 등 다양한 백엔드로 변환 가능
- 여러 언어(frontend)에서 생성된 IR을 하나로 합쳐 최적화 후 기계어로 변환할 수 있음
- 여러 어셈블리를 통합하는 중간 단계 역할을 수행 


3. 사람이 직접 LLVM IR 작성 가능

LLVM IR은 사람이 직접 작성할 수 있습니다. 예를 들어, 두 수를 더하는 함수는 다음과 같이 표현됩니다:

define i32 @add(i32 %a, i32 %b) {
entry:
  %sum = add i32 %a, %b
  ret i32 %sum
}

4. 기계로 LLVM IR 작성 가능

보통은 사람이 직접 작성하기보다 컴파일러(frontend)가 IR을 자동으로 생성합니다.
- 예: clang -S -emit-llvm add.c -o add.ll
- 이렇게 하면 C 코드가 IR로 변환되어, 이후 최적화와 코드 생성에 활용됩니다. 


5. 신규 프로그래밍 언어 개발에 활용

LLVM IR은 새로운 언어를 만들 때도 사용됩니다.
- 언어 제작자는 문법과 파서를 구현한 뒤, 기계어 대신 IR을 출력하도록 설계
- LLVM이 IR을 다양한 아키텍처용 코드로 변환
- Rust, Swift, Julia 같은 언어들이 LLVM 기반으로 만들어졌습니다. 


6. OOP도 이론적으로 가능

LLVM IR은 함수, 구조체, 타입 시스템 등을 표현할 수 있어 객체지향 프로그래밍(OOP) 개념도 이론적으로 구현 가능합니다.
- 클래스와 메서드는 구조체와 함수 포인터로 모델링 가능
- 가상 함수 테이블(vtable) 같은 패턴도 IR로 표현 가능
- IR 자체는 저수준 중간 표현이므로, OOP는 언어 설계자가 IR 위에 추상화를 얹어 구현하는 방식입니다. 


📌 정리

  • LLVM IR은 LLVM 툴체인을 통해 다루는 가상 중간 언어다.
  • 여러 언어와 아키텍처를 연결하며, 사람이 직접 작성하거나 컴파일러가 생성할 수 있다.
  • Clang 설치 시 LLVM 툴체인도 함께 설치된다.
  • 새로운 언어 개발에도 활용되며, OOP 같은 고수준 개념도 표현 가능하다.

🔗 공식 튜토리얼

LLVM IR을 학습하려면 LLVM 공식 튜토리얼을 참고할 수 있습니다: LLVM Tutorial: Kaleidoscope


이 글은 LLM으로 생산한 글입니다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 뛰어난 운동 신경으로 남자와 싸워도 이길 것 같은 여자 스타는? 운영자 25/11/24 - -
이슈 [디시人터뷰] 충무로가 주목하는 신예, '세계의 주인' 서수빈 운영자 25/11/24 - -
AD 대학생 필수템! What's in my Bag 운영자 25/11/21 - -
공지 프로그래밍 갤러리 이용 안내 [97] 운영자 20.09.28 48763 65
2904661 '19' 맥심 모델 출신 여 BJ. gif 프갤러(211.230) 05:40 2 0
2904660 '19' 젖제로투 추는 BJ.gif 프갤러(211.230) 05:37 5 0
2904631 인지과학조져라 손발이시립디다갤로그로 이동합니다. 04:03 15 0
2904621 똥글 싸는 고닉들 다 뒤졌으면 좋겠다. 프갤러(112.171) 03:29 16 0
2904619 살면서 순수 내의지로 무언가 열심히한게 공기역학갤로그로 이동합니다. 03:16 19 0
2904612 플밍갤말고 딴갤없냐 프갤러(59.14) 03:01 13 0
2904601 유튜브 광고에 피싱사이트 나오더라 헬마스터갤로그로 이동합니다. 02:37 22 0
2904588 꽃무늬 돌고래.. ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 02:12 22 0
2904586 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 02:11 22 0
2904584 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 02:10 23 0
2904523 사실 안뽑히는 이유는 아직 지원을 안했기 때문이지 [3] 프갤러(110.8) 11.24 50 0
2904522 짱깨먼지 좃같노 [1] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 48 0
2904521 남북한/일본은 중국에 미세먼지 공동대응해야함 [1] ㅇㅇ(211.216) 11.24 26 0
2904518 안뽑히는 이유 알았다. 나 러스트 존나 못한다. [5] 프갤러(110.8) 11.24 66 0
2904513 회사다니다 보면 바보되어가는 느낌 [4] CANON갤로그로 이동합니다. 11.24 61 0
2904510 가끔 알 수 없는 감정이 들때면 [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 42 0
2904506 린겨 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 29 0
2904504 필독 [2] 노력갤로그로 이동합니다. 11.24 44 0
2904503 26학번 새내기들을 위한 입시 면접 합격 가이드(따뜻한 조언)!Y 프갤러(121.142) 11.24 60 1
2904501 와 개씨발 모기잇노 [1] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 50 0
2904500 대한민국 출산율 회생방안 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 26 0
2904499 너, 재판 쌓여있잖아 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 47 0
2904496 API 왤케 비쌈? ㅇㅇ갤로그로 이동합니다. 11.24 52 0
2904495 나님 누웅..✨ ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 19 0
2904490 ㄴㅏ씻주준⭐+ [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 61 0
2904489 재롱둥이 친중재명 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 24 0
2904484 오늘 숙면을 위해 모든 전자기기 전원 뽑고 자볼 예정임 [4] 가연아갤로그로 이동합니다. 11.24 56 0
2904482 문서작업이랑 테스트만 존나 하고있는데 퇴사할까? [5] ㅇㅇ(220.90) 11.24 59 0
2904480 형들 빡대가리는 코딩 포기해야할까요? [21] 썬콜맨갤로그로 이동합니다. 11.24 130 0
2904479 야 공익이면 군필적는게 낳냐 [6] ㅇㅇ갤로그로 이동합니다. 11.24 72 0
2904478 모모링 위험햇! [1] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 44 0
2904477 예아 [5] 개멍청한유라갤로그로 이동합니다. 11.24 52 0
2904475 냥덩이.. 강해..? [6] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 50 0
2904474 하루에 한번 앱히키 욕하기 프갤러(118.235) 11.24 32 0
2904471 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 75 0
2904470 프로그래밍 진짜 개 입문자 바로 플러터배워도됨? [7] ㅇㅇ(118.235) 11.24 91 0
2904468 퇴사할때 연차남으면 어떻게함? [3] ㅇㅇ(220.90) 11.24 59 0
2904467 lg dx school 진지하게 어떰?? [1] 프갤러(106.101) 11.24 59 0
2904464 Ada, Rust의 0 오버헤드 C 바인딩 [2] 나르시갤로그로 이동합니다. 11.24 49 0
2904463 서버 2u짜리 추천좀 [2] 프갤러(124.194) 11.24 38 0
2904461 아 존나 귀찮다. 요즘 회사들 왜케 깐깐하게 굶? [15] 프갤러(221.149) 11.24 159 1
LLVM IR 소개 (일종의 통합 가상 어셈블리) 나르시갤로그로 이동합니다. 11.24 35 0
2904459 사람이 어셈블리를 직접 작성하지 않고 LLVM IR을 작성 [5] 나르시갤로그로 이동합니다. 11.24 66 1
2904457 시발 ㅋㅋㅋㅋ [10] 루도그담당(58.233) 11.24 107 0
2904455 아 왜 에러가 나는거야 [9] 루도그담당(58.233) 11.24 92 0
2904453 안드로이드 공부 중인데 몇 가지 질문 및 피드백좀 [5] 프갤러(222.104) 11.24 63 0
2904452 대학교 1학년 프붕이 교양 교수랑 말다툼함 [16] ㅇㅇ(211.234) 11.24 127 0
2904451 앱히키 엄창년 프갤러(118.235) 11.24 41 1
2904450 아오 휴일인데 가까운데 갈만한 곳이 없네..ㅇㅅㅇ [3] ㅇㅅㅇ(106.102) 11.24 46 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2