디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.24 14:34:57
조회 54 추천 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 48771 65
2904993 유재석 김태호 카르텔 근황 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 22:58 2 0
2904992 밤하늘 별빛이 호롱불 같구낭 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 22:56 3 0
2904988 Wendy & Lisa-The Closing Of the Year 발명도둑잡기(118.216) 22:48 4 0
2904986 회사에서 AI 써야하는 이유가 있음 박민준갤로그로 이동합니다. 22:45 14 0
2904984 33살 인생 평가좀.. 진지함 정말이야, 절박해 [1] ㅇㅇ(39.7) 22:41 11 0
2904982 [발언대] ‘2인 선거구’ 없애야 민심 제대로 반영된다 발명도둑잡기(118.216) 22:29 7 0
2904981 Ada의 case when 최적화와 errno → 예외 매핑 나르시갤로그로 이동합니다. 22:24 6 0
2904979 무슨 맛으로 먹을까 떡볶이 인데 망했다. [1] 넥도리아(220.74) 22:11 12 0
2904976 통합 에러 핸들러와 이진 탐색 최적화 나르시갤로그로 이동합니다. 22:04 10 0
2904975 나님 주무십니당⭐+ ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 21:56 8 0
2904974 Go 쓰자 박민준갤로그로 이동합니다. 21:50 15 0
2904973 악플러 멍유 제발 일본에서 조난.. [4] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 21:48 29 0
2904972 나님 누엇어양✨ ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 21:46 12 0
2904970 뉴비들을 위한 입시 면접 합격 가이드(따뜻한 조언)!M 프갤러(121.142) 21:30 17 1
2904969 누리호 발사 기원 우주 플레이리스트 발명도둑잡기(118.216) 21:15 15 0
2904966 나씻주준⭐+ [1] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 21:11 24 0
2904964 일본 취업 유학 워홀 여행 관련모임 ㅇㅇ(106.146) 21:07 18 0
2904963 27일 27번 타자가 친 공처럼 로케트 잘 올라갈까? 발명도둑잡기(118.216) 20:54 15 0
2904962 <UDT 우리동네 특공대>가 인기래서 생각나는 예전 글 [1] 발명도둑잡기(118.216) 20:27 21 0
2904961 C API를 위한 고성능 예외-에러코드(errcode) 매핑 전략 나르시갤로그로 이동합니다. 20:23 26 0
2904960 엣지 탭 천개쯤 띄우면 다 [1] 발명도둑잡기(118.216) 20:16 20 0
2904959 왜 갑자기 쌍ㅅ쌍 얘기야? 나르시갤로그로 이동합니다. 20:00 27 1
2904958 Clair 라이브러리: Ada 예외를 C API로 매핑하기 나르시갤로그로 이동합니다. 19:55 19 0
2904957 한국에 실제 있다는 중국 사이비종교 마을 ㄷㅅㄷ [1] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 19:52 32 0
2904956 트위터가 공개한건 국적이 아니라 위치다 발명도둑잡기(118.216) 19:46 18 0
2904955 민주정의당 후보, 4대강 죽이기 광고모델 이순재 발명도둑잡기(118.216) 19:42 24 1
2904954 외모는 단점을 커버시키는 힘이 있다 [2] Move갤로그로 이동합니다. 19:38 42 0
2904953 짱깨 한국 여론조작 또 걸렸네 ㅋㅅㅋ ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 19:37 29 1
2904952 귀찮은데 말이 필요하나 루도그담당(58.233) 19:36 39 0
2904951 저능아씨는 여기서 살아 RyuDOG갤로그로 이동합니다. 19:31 32 0
2904950 프붕이들 솔직히 병신들이 도배하는거보다 러스트 얘기가 낫지? [4] 프갤러(110.8) 19:29 39 0
2904949 아아 하늘은 어째서 나를 낳고 RyuDOG갤로그로 이동합니다. 19:28 22 0
2904948 낄낄낄낄 RyuDOG갤로그로 이동합니다. 19:27 21 0
2904947 솔직히 글 읽을 필요도 없음 RyuDOG갤로그로 이동합니다. 19:26 26 0
2904946 저거 봐바 몇대 때려주니까 루도그담당(58.233) 19:25 30 0
2904945 우웅 화짱조 짖는거 컹컹 RyuDOG갤로그로 이동합니다. 19:24 16 0
2904944 니 신상은 더군다나 관심 없어 병신아 루도그담당(58.233) 19:21 42 0
2904943 난 애초에 익명이 아니란다 ㅆㅇㅆ야 RyuDOG갤로그로 이동합니다. 19:19 32 0
2904942 커뮤니티에 연봉실명제 달면 웃기긴 할듯 [1] 코딩의신(121.139) 19:18 34 0
2904941 익명 깨지면 너만 불쌍치 루도그담당(58.233) 19:17 33 0
2904940 여기도 여시처럼 익명 깨지면 웃기긴할듯 RyuDOG갤로그로 이동합니다. 19:16 21 0
2904939 뀨? ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 19:15 19 0
2904938 님들 디자인 패턴이나 자료형 변환 필요성 설명해도 모르면 어캄? [3] 프갤러(58.76) 19:14 30 0
2904937 빨리 실업급여 제발 [2] 프갤러(110.8) 19:14 28 0
2904936 그래서 팩트는 루도그담당(58.233) 19:14 35 0
2904935 ㅆㅇㅆ 보면 존나 불쌍하긴함 ㅋㅋㅋ RyuDOG갤로그로 이동합니다. 19:12 33 0
2904934 아무리 기싸움 걸어봤자 루도그담당(58.233) 19:11 25 0
2904933 하긴 워낙 캥기는게 많은 인생이라 ㅋㅋㅋ RyuDOG갤로그로 이동합니다. 19:10 22 0
2904932 송사고 뭐고 루도그담당(58.233) 19:08 35 4
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2