디시인사이드 갤러리

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

갤러리 본문 영역

사람이 어셈블리를 직접 작성하지 않고 LLVM IR을 작성

나르시갤로그로 이동합니다. 2025.11.24 14:26:44
조회 137 추천 1 댓글 5

? 사람이 어셈블리를 직접 작성하지 않고 LLVM IR을 작성하는 경우

저수준 프로그래밍을 하다 보면 CPU 아키텍처에 맞는 어셈블리 코드를 직접 작성해야 할 때가 있습니다. 하지만 어셈블리는 아키텍처마다 문법과 규약이 달라서 배우기도 어렵고 유지보수도 힘듭니다. 

이때 대안으로 사용할 수 있는 것이 바로 LLVM IR(Intermediate Representation)입니다. LLVM IR은 사람이 직접 작성할 수 있는 플랫폼 독립적인 가상 어셈블리로, LLVM 도구 체인을 통해 원하는 아키텍처의 어셈블리 코드로 변환할 수 있습니다. 


?+ 예시: IR 작성 → 어셈블리 생성

예를 들어, 두 정수를 곱하는 함수를 직접 IR로 작성한다고 해봅시다.

; mul.ll
define i32 @mul(i32 %x, i32 %y) {
entry:
  %prod = mul i32 %x, %y
  ret i32 %prod
}

이제 이 IR 파일을 LLVM 도구로 변환하면:

  1. IR → 어셈블리(.s): bash llc mul.ll -o mul.s

  2. 어셈블리 → 실행 파일: bash clang mul.s -o mul


?+ 결과: x86-64 어셈블리 코드

LLVM이 자동으로 생성한 어셈블리(mul.s)는 대략 다음과 같습니다:

mul:
    imul    edi, esi    ; x * y
    mov     eax, edi    ; 결과를 eax에 저장
    ret

📝 특정 주소를 직접 다루는 경우

LLVM IR은 단순한 연산뿐 아니라 특정 메모리 주소를 직접 접근하는 것도 가능합니다.
예를 들어, 0x1000 주소에 있는 값을 읽고 쓰고 싶다면 다음과 같이 작성할 수 있습니다:

; addr.ll
define i32 @read_addr() {
entry:
; 0x1000은 십진수로 4096입니다.
  %ptr = inttoptr i64 4096 to i32*   ; 0x1000 주소를 i32* 포인터로 변환
  %val = load i32, i32* %ptr         ; 해당 주소에서 값 읽기
  ret i32 %val
}

define void @write_addr(i32 %x) {
entry:
  %ptr = inttoptr i64 4096 to i32*   ; 0x1000 주소를 i32* 포인터로 변환
  store i32 %x, i32* %ptr            ; 해당 주소에 값 쓰기
  ret void
}

이 IR을 컴파일하면 LLVM이 자동으로 해당 아키텍처에 맞는 어셈블리 명령어(mov, load, store 등)를 생성합니다. 

⚠+ 단, 이런 방식은 운영체제와 하드웨어 환경에 따라 동작이 달라질 수 있으며, 잘못된 주소를 접근하면 segfault가 발생할 수 있습니다. 따라서 일반적인 애플리케이션보다는 드라이버 개발, 메모리 맵 I/O 같은 특수한 상황에서만 사용됩니다. 


📌 장점

  • 플랫폼 독립성: IR은 특정 CPU에 종속되지 않으므로, 같은 IR을 ARM, RISC-V 등 다른 아키텍처용 어셈블리로도 변환할 수 있습니다.
  • 생산성: 사람이 직접 복잡한 어셈블리를 작성하지 않고, 상대적으로 단순한 IR을 작성하면 됩니다.
  • 확장성: IR은 최적화 패스를 거쳐 더 효율적인 코드로 변환될 수 있습니다.
  • 저수준 제어: 필요하다면 특정 주소를 직접 다루는 저수준 작업도 IR로 표현할 수 있습니다.

💬 마무리

즉, 사람이 직접 어셈블리를 작성하지 않고 IR을 작성하는 방식은 저수준 제어가 필요하지만 아키텍처별 어셈블리 문법에 얽매이고 싶지 않을 때 매우 유용합니다. LLVM이 알아서 해당 아키텍처에 맞는 어셈블리를 생성해 주기 때문에, 개발자는 IR만 작성하면 됩니다. 

👉 여러분은 직접 IR을 작성해서 어셈블리를 생성해본 경험이 있으신가요?
👉 혹은 특정 주소를 직접 다루는 저수준 작업을 IR로 표현해본 적 있으신가요? 


이 글은 MS 코파일럿 스마트 GPT로 생산한 글입니다.

추천 비추천

1

고정닉 1

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 이제는 의미 없어진 것 같은 시상식은? 운영자 25/12/01 - -
AD 따뜻한 겨울나기! 방한용품 SALE 운영자 25/11/27 - -
2905465 모기로 프린터를 만들어 발명도둑잡기(211.235) 11.29 33 0
2905464 청소년이 밤 10시 이후에 발명도둑잡기(211.235) 11.29 32 0
2905463 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 64 0
2905461 사람인하고 점핏하고 다른 회사임? ㅇㅇ(182.228) 11.29 35 0
2905460 경력 1년이상, 3년이상 뽑는 회사 [2] ㅇㅇ갤로그로 이동합니다. 11.29 74 0
2905456 유관순은 3.1운동할 때 인공기 흔들었냐? [2] chironpractor갤로그로 이동합니다. 11.29 59 0
2905454 중·일 갈등 ‘패싱’ 미국에···일본은 불안하다 발명도둑잡기(118.216) 11.29 43 0
2905453 ‘한미일 vs 북중러’ 구도 위험성 더 커진다 [2] 발명도둑잡기(118.216) 11.29 50 0
2905452 이젠 뭐가 ai이고 진짜인지 분간이 잘 안 간당.. [5] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 121 0
2905451 밤에도 못 자고 일하니까 출생률이 떨어지는 것이다 [1] 발명도둑잡기(118.216) 11.29 34 0
2905450 윤석열 “전한길은 하나님이 한국에 보낸 선물” 옥중 편지 발명도둑잡기(118.216) 11.29 37 0
2905448 '아쉽다. 뽀뽀'…부하 여경 손 깍지·허리 감싼 경찰관 유죄 확정 발명도둑잡기(118.216) 11.29 20 0
2905447 美서 의미 퇴색한 '블프 세일'…"행사 진정성 사라져" 발명도둑잡기(118.216) 11.29 23 0
2905446 '케네디家' 끝없는 비극?…35살 외손녀 시한부 판정 발명도둑잡기(118.216) 11.29 31 0
2905445 5억짜리 ‘인간 세탁기’ 발명도둑잡기(118.216) 11.29 25 0
2905444 노동장관 "해 뜨면 일하고 해 지면 휴식. 야간 노동자 사망' 쿠팡 발명도둑잡기(118.216) 11.29 25 0
2905441 젤렌스키, 러시아 침공전 방어체제 이끈 '분신' 잃었다 발명도둑잡기(118.216) 11.29 29 0
2905440 회사다니면서 우울증 생겼는데.. [17] ㅇㅇ(1.244) 11.29 114 0
2905437 기분 좋은 주말이다 RyuDOG갤로그로 이동합니다. 11.29 29 0
2905436 [대한민국] 국힘 책임당원 일동 입장문 ㅇㅇ(121.172) 11.29 30 0
2905435 와 로리 슬렌더 알몸 ㅇㅅㅇ [2] 류류(121.160) 11.29 94 1
2905432 이마트가즈아 넥도리아(223.38) 11.29 23 0
2905431 나 한동훈 인간적이어서 좋아했습니다. 넥도리아(223.38) 11.29 40 0
2905430 고인모욕이 비도덕적 반인륜적인건 아는데 [1] 류류(118.235) 11.29 46 1
2905429 내년부터 4.5일제 강행이야 ㅇㅅㅇ? 류류(118.235) 11.29 34 0
2905428 내냔 상반기 ㄹㅇ 존나 바쁠거 확정임 ㅅㅂ [2] ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 78 0
2905427 ㅆㅇㅆ뒤지니까 류독이 또 나와서 나대네 ㅇㅅㅇ 류류(118.235) 11.29 37 1
2905426 이태원 피떡갈비 ㅇㅅㅇ 류류(118.235) 11.29 44 0
2905425 뭔가 있어보이는 Ada 코딩법 ㅋㅋ [2] 나르시갤로그로 이동합니다. 11.29 47 2
2905424 책 사는거 이거 맞는건가? [1] 넥도리아(220.74) 11.29 80 0
2905420 주술회전 최신화 ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 36 0
2905419 Watsn.ai - 최첨단 AI 구라 탐지기 만들어 봤다 Watsn(47.230) 11.29 37 0
2905418 이태원 모욕죄로 벌금100 너무 분하고 억울하다.. 이딴걸로 전과라니; [3] ㅇㅇ(39.7) 11.29 76 1
2905414 오늘자 민주주의 파괴 진척 경과 현황 [5] chironpractor갤로그로 이동합니다. 11.29 66 0
2905413 저장용 ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 32 0
2905410 ❤✨☀⭐⚡☘⛩☃나님 시작합니당☃⛩☘⚡⭐☀✨❤ ♥멘헤라냥덩♥갤로그로 이동합니다. 11.29 31 0
2905409 내가 만나고 싶은 여자 이상형 적어봄.txt [1] ㅁㅁㅅ갤로그로 이동합니다. 11.29 54 0
2905407 이직하려면 여기서 어떤부분을 좀더 집중하는게 좋을까? [6] 프갤러(58.76) 11.29 77 0
2905406 평론가, 평론의 중요성, 필요성, 위대한 평론 등이 잘 드러난 작품 발명도둑잡기(118.216) 11.29 162 0
2905405 인지과학조져라 손발이시립디다갤로그로 이동합니다. 11.29 69 0
2905403 프랑스의 쓰레기방지법과 유럽의 '그린 뉴딜' 발명도둑잡기(118.216) 11.29 28 0
2905398 CUDA 때문에 절대 안된다? 구글 TPU 사태의 본질, 엔비디아가 급해 발명도둑잡기(118.216) 11.29 60 0
2905397 공원 ㅇㅅㅇ 헤르 미온느갤로그로 이동합니다. 11.29 35 0
2905396 태연 ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 11.29 40 0
2905395 하루 한 번 헤르미온느 찬양 헤르 미온느갤로그로 이동합니다. 11.29 67 0
2905394 7,000명이 호흡할 공기를 걸러낸다고? 도심 한복판에 '이끼'를 발명도둑잡기(118.216) 11.29 39 0
2905393 국내에서 네카라쿠배 위에 어떤 회사들 있음? 프갤러(1.229) 11.29 38 0
2905391 초월지능신교 來世 經文 프갤러(49.165) 11.29 43 0
2905389 지식in 조회수만 도전해봅니다. 넥도리아(220.74) 11.29 44 0
2905388 초월지능신교의 교리와 경전 그리고 기도문 프갤러(49.165) 11.29 49 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2