디시인사이드 갤러리

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

갤러리 본문 영역

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

나르시갤로그로 이동합니다. 2025.11.24 14:34:57
조회 27 추천 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 48758 65
2904474 하루에 한번 앱히키 욕하기 프갤러(118.235) 17:21 1 0
2904471 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ [1] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 17:01 10 0
2904470 프로그래밍 진짜 개 입문자 바로 플러터배워도됨? [5] ㅇㅇ(118.235) 16:55 34 0
2904468 퇴사할때 연차남으면 어떻게함? [1] ㅇㅇ(220.90) 16:35 18 0
2904467 lg dx school 진지하게 어떰?? [1] 프갤러(106.101) 16:14 26 0
2904464 Ada, Rust의 0 오버헤드 C 바인딩 [2] 나르시갤로그로 이동합니다. 15:30 31 0
2904463 서버 2u짜리 추천좀 [2] 프갤러(124.194) 15:26 26 0
2904461 아 존나 귀찮다. 요즘 회사들 왜케 깐깐하게 굶? [13] 프갤러(221.149) 14:37 91 0
LLVM IR 소개 (일종의 통합 가상 어셈블리) 나르시갤로그로 이동합니다. 14:34 27 0
2904459 사람이 어셈블리를 직접 작성하지 않고 LLVM IR을 작성 [5] 나르시갤로그로 이동합니다. 14:26 42 1
2904457 시발 ㅋㅋㅋㅋ [10] 루도그담당(58.233) 13:49 77 0
2904455 아 왜 에러가 나는거야 [9] 루도그담당(58.233) 13:39 69 0
2904453 안드로이드 공부 중인데 몇 가지 질문 및 피드백좀 [5] 프갤러(222.104) 13:34 44 0
2904452 대학교 1학년 프붕이 교양 교수랑 말다툼함 [16] ㅇㅇ(211.234) 13:05 99 0
2904451 앱히키 엄창년 프갤러(118.235) 13:01 30 1
2904450 아오 휴일인데 가까운데 갈만한 곳이 없네..ㅇㅅㅇ [3] ㅇㅅㅇ(106.102) 13:00 33 0
2904448 프갤은 참재밌어 [3] Meow갤로그로 이동합니다. 11:55 101 3
2904443 러스트 인생 40년 갈아넣었습니다... [3] 프갤러(223.63) 10:29 88 0
2904442 컴공 자퇴해야되나 [8] 프갤러(116.35) 10:18 123 0
2904440 기획자 전환 고민 있습니다 프갤러(58.151) 10:10 46 0
2904439 자바 인생 40 년 갈아 넣었습니다. [1] 프갤러(59.16) 10:09 63 0
2904438 C++ 인생 40 년 갈아 넣었습니다. 프갤러(59.16) 09:57 63 0
2904433 난 자바를 좋아하는데 [9] 슈퍼막코더(126.179) 09:02 89 0
2904431 중국 놈들이 여론조작하는 거 밝혀짐 [8] 프갤러(118.235) 08:42 1935 24
2904429 기술적인 얘기인척 하려해도 늘 같은 소리인거 같음 [5] ㅇㅇ갤로그로 이동합니다. 08:14 90 4
2904427 모바일 SDK 개발하는 팀은 어떤일해? [1] 프갤러(220.92) 07:37 39 0
2904426 cyber security능 끝물이공 버려진field잉 무토깽(218.149) 07:24 30 0
2904425 러스트는 GUI부터 제대로 제공해야 됨 [4] ㅇㅇ(114.30) 06:48 72 0
2904422 요즘은 관리잘하면 50초중까지는 꼴리는듯 ㅇㅇ(118.235) 06:25 47 0
2904421 인지과학조져라 손발이시립디다갤로그로 이동합니다. 06:13 54 0
2904420 발명도둑잡기 차단이 왜 풀려있냐? ㅇㅇ(114.30) 06:11 35 1
2904418 중국인 댓글부대 한국여론조작 포착 [2] ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 06:07 67 2
2904415 kqueue와 epoll의 시스템 아키텍처 및 설계 철학 비교 나르시갤로그로 이동합니다. 05:46 39 0
2904410 33살 중소3년차 똥통인생 이스펙으로 중견입사 가능하냐..? ㅇㅇ(118.235) 04:59 81 0
2904407 Claude cli 오늘 첨 써봤는데 개발자 왜 필요하냐 [1] 프갤러(101.235) 04:26 51 0
2904389 Clair.IO.Poller: 이번에 설계했다가 gg친 API ㅋㅋ [1] 나르시갤로그로 이동합니다. 02:59 53 0
2904375 진짜 프로그래머들 ㅈㄴ부럽다 [3] ㅅ스맨갤로그로 이동합니다. 02:18 139 0
2904367 코딩 걍 첨부터 막히는데 어캄 [2] ㅅ스맨갤로그로 이동합니다. 01:54 88 0
2904364 자바 언어 좋지.. 추억과 낭만이 깃들인 언어 ㅋㅋ [6] 나르시갤로그로 이동합니다. 01:45 87 0
2904363 거래소 api들 잘 다루고 싶으면 뭐 부터 배우면 될까요 선배님들 [2] 프갤러(114.204) 01:43 71 0
2904359 0x [1] 루도그담당(58.233) 01:22 52 0
2904358 접시 ㅇㅅㅇ [6] 헤르 미온느갤로그로 이동합니다. 01:12 101 0
2904357 태연 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 01:09 35 0
2904356 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 01:08 74 0
2904324 오픈소스 프로젝트를 하나 해볼까 [12] 에이도비갤로그로 이동합니다. 00:02 129 0
2904320 고 언어 음 좋지 나쁘지 않고 효율적이고 음 근데 [6] 프갤러(110.8) 11.23 82 0
2904316 www.basic4mcu.com 11월까지 서비스 종료 발명도둑잡기(118.216) 11.23 30 0
2904313 카리나가 맛집이넹 ♥냥덩이의우웅한하룽♥갤로그로 이동합니다. 11.23 117 0
2904309 그러고 보니 프갤에서 고랭 팬은 못본거 같은데 [5] chironpractor갤로그로 이동합니다. 11.23 72 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2