디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.24 14:34:57
조회 103 추천 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/12/08 - -
이슈 [디시人터뷰] 솔직함을 리뷰하는 유튜버, 흑백리뷰 운영자 25/12/09 - -
AD 루틴 ON! 운동 찐템! 지금 할인 중 운영자 25/11/27 - -
2904474 하루에 한번 앱히키 욕하기 프갤러(118.235) 11.24 111 0
2904471 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 153 0
2904470 프로그래밍 진짜 개 입문자 바로 플러터배워도됨? [9] ㅇㅇ(118.235) 11.24 169 0
2904468 퇴사할때 연차남으면 어떻게함? [3] ㅇㅇ(220.90) 11.24 138 0
2904467 lg dx school 진지하게 어떰?? [1] 프갤러(106.101) 11.24 168 0
2904464 Ada, Rust의 0 오버헤드 C 바인딩 [2] 나르시갤로그로 이동합니다. 11.24 126 0
2904463 서버 2u짜리 추천좀 [2] 프갤러(124.194) 11.24 106 0
2904461 아 존나 귀찮다. 요즘 회사들 왜케 깐깐하게 굶? [15] 프갤러(221.149) 11.24 263 1
LLVM IR 소개 (일종의 통합 가상 어셈블리) 나르시갤로그로 이동합니다. 11.24 103 0
2904459 사람이 어셈블리를 직접 작성하지 않고 LLVM IR을 작성 [5] 나르시갤로그로 이동합니다. 11.24 165 1
2904457 시발 ㅋㅋㅋㅋ [10] 루도그담당(58.233) 11.24 196 0
2904455 아 왜 에러가 나는거야 [9] 루도그담당(58.233) 11.24 160 0
2904453 안드로이드 공부 중인데 몇 가지 질문 및 피드백좀 [5] 프갤러(222.104) 11.24 156 0
2904452 대학교 1학년 프붕이 교양 교수랑 말다툼함 [16] ㅇㅇ(211.234) 11.24 225 0
2904451 앱히키 엄창년 프갤러(118.235) 11.24 128 1
2904450 아오 휴일인데 가까운데 갈만한 곳이 없네..ㅇㅅㅇ [3] ㅇㅅㅇ(106.102) 11.24 136 0
2904448 프갤은 참재밌어 [3] Meow갤로그로 이동합니다. 11.24 225 3
2904443 러스트 인생 40년 갈아넣었습니다... [3] 프갤러(223.63) 11.24 216 0
2904442 컴공 자퇴해야되나 [9] 프갤러(116.35) 11.24 271 0
2904440 기획자 전환 고민 있습니다 프갤러(58.151) 11.24 110 0
2904439 자바 인생 40 년 갈아 넣었습니다. [1] 프갤러(59.16) 11.24 172 0
2904438 C++ 인생 40 년 갈아 넣었습니다. 프갤러(59.16) 11.24 131 0
2904433 난 자바를 좋아하는데 [9] 슈퍼막코더(126.179) 11.24 197 0
2904431 중국 놈들이 여론조작하는 거 밝혀짐 [15] 프갤러(118.235) 11.24 3083 44
2904429 기술적인 얘기인척 하려해도 늘 같은 소리인거 같음 [5] ㅇㅇ갤로그로 이동합니다. 11.24 220 5
2904426 cyber security능 끝물이공 버려진field잉 무토깽(218.149) 11.24 108 0
2904425 러스트는 GUI부터 제대로 제공해야 됨 [4] ㅇㅇ(114.30) 11.24 174 0
2904422 요즘은 관리잘하면 50초중까지는 꼴리는듯 ㅇㅇ(118.235) 11.24 112 0
2904421 인지과학조져라 손발이시립디다갤로그로 이동합니다. 11.24 103 0
2904420 발명도둑잡기 차단이 왜 풀려있냐? ㅇㅇ(114.30) 11.24 111 1
2904418 중국인 댓글부대 한국여론조작 포착 [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.24 127 2
2904415 kqueue와 epoll의 시스템 아키텍처 및 설계 철학 비교 나르시갤로그로 이동합니다. 11.24 113 0
2904410 33살 중소3년차 똥통인생 이스펙으로 중견입사 가능하냐..? ㅇㅇ(118.235) 11.24 170 0
2904407 Claude cli 오늘 첨 써봤는데 개발자 왜 필요하냐 [1] 프갤러(101.235) 11.24 174 0
2904389 Clair.IO.Poller: 이번에 설계했다가 gg친 API ㅋㅋ [1] 나르시갤로그로 이동합니다. 11.24 146 0
2904375 진짜 프로그래머들 ㅈㄴ부럽다 [3] ㅅ스맨갤로그로 이동합니다. 11.24 271 0
2904367 코딩 걍 첨부터 막히는데 어캄 [2] ㅅ스맨갤로그로 이동합니다. 11.24 202 0
2904364 자바 언어 좋지.. 추억과 낭만이 깃들인 언어 ㅋㅋ [6] 나르시갤로그로 이동합니다. 11.24 182 0
2904363 거래소 api들 잘 다루고 싶으면 뭐 부터 배우면 될까요 선배님들 [3] 프갤러(114.204) 11.24 173 0
2904359 0x [1] 루도그담당(58.233) 11.24 139 0
2904358 접시 ㅇㅅㅇ [6] 헤르 미온느갤로그로 이동합니다. 11.24 192 0
2904357 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 11.24 103 0
2904356 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 11.24 153 0
2904324 오픈소스 프로젝트를 하나 해볼까 [12] 에이도비갤로그로 이동합니다. 11.24 234 0
2904320 고 언어 음 좋지 나쁘지 않고 효율적이고 음 근데 [6] 프갤러(110.8) 11.23 185 0
2904316 www.basic4mcu.com 11월까지 서비스 종료 발명도둑잡기(118.216) 11.23 96 0
2904313 카리나가 맛집이넹 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.23 184 0
2904309 그러고 보니 프갤에서 고랭 팬은 못본거 같은데 [5] chironpractor갤로그로 이동합니다. 11.23 170 0
2904303 클라우드 엔지니어 희망하는데 [2] 프갤러(118.235) 11.23 153 0
2904298 cursor 대체할만한거 있어? [2] ㅇㅇ(124.48) 11.23 169 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2