태그: #compiler
GPU·LLM·MLOps·쿠버네티스, 그리고 마음가짐에 관한 글 · 43 편
컴파일러와 링커 내부 완전 정복 — #include부터 실행 파일이 되기까지 ELF, 심볼, 정적/동적 링킹, 재배치, LTO (2025)
"hello.c"가 실행 파일이 되는 여정을 원자 단위로 추적한다. 전처리 / 컴파일 / 어셈블 / 링크의 4단계, ELF 파일 레이아웃, 심볼 테이블과 재배치, 정적 라이브러리의 아카이브 구조, 동적 링커 ld.so의 GOT/PLT 트릭, C++ 이름 맹글링의 혼돈, LTO가 왜 "전체 프로그램 최적화"인지, 그리고 Rust/Go가 왜 고전적 링킹과 다른 길을 갔는지 — 오늘도 우리가 gc
2026-04-15 · 31 분 읽기 #compiler#linker#elf#symbol#static-linking컴파일러 & 인터프리터 설계 완전 가이드 2025: Lexer, Parser, AST, 코드 생성
컴파일러/인터프리터 설계의 모든 것! Lexer(토큰화), Parser(구문 분석/재귀 하강/Pratt), AST(추상 구문 트리), 의미 분석(타입 체크), IR(중간 표현), 코드 생성(LLVM/WebAssembly), 최적화(상수 폴딩/인라이닝/루프), 실전 미니 언어 구현.
2026-04-14 · 40 분 읽기 #compiler#interpreter#lexer#parser#ast컴파일러와 인터프리터: 코드가 실행되는 원리 — 개발자가 알아야 할 언어 처리의 모든 것
코드가 실행되는 원리를 완전 해부! 렉싱→파싱→AST→IR→코드 생성, 컴파일러 vs 인터프리터 vs JIT, V8 엔진(JS), CPython(Python), JVM(Java), GCC/LLVM, GraalVM — 개발자의 성능 직관을 키우는 CS 핵심 지식.
2026-03-23 · 28 분 읽기 #compiler#interpreter#lexer#parser#ast[컴파일러] 20. 현대 컴파일러의 발전과 응용
LLVM 아키텍처, GCC vs LLVM vs Clang 비교, JIT 컴파일, 현대 언어 기능의 컴파일 과제, 보안 분야의 컴파일러 기술, AI/ML 컴파일러(XLA, TVM), WebAssembly 컴파일을 다룹니다.
2026-03-19 · 20 분 읽기 #compiler#cs-fundamentals[컴파일러] 17. 병렬성 검출과 루프 변환
데이터 병렬성과 태스크 병렬성의 유형, 배열 의존성 분석, 루프 변환(교환, 타일링, 융합, 분열), 아핀 변환 이론의 기초, 지역성 최적화를 다룹니다.
2026-03-19 · 15 분 읽기 #compiler#cs-fundamentals[컴파일러] 14. 데이터 흐름 분석 프레임워크
데이터 흐름 분석의 기본 원리, 도달 정의, 활성 변수 분석, 가용 수식 분석, 반복 알고리즘, gen/kill 집합, 그리고 격자 이론의 기초를 다룹니다.
2026-03-19 · 16 분 읽기 #compiler#cs-fundamentals[컴파일러] 11. 코드 생성 - 기본 블록과 흐름 그래프
코드 생성기 설계의 핵심 이슈와 기본 블록, 흐름 그래프의 개념을 다룹니다. 명령어 선택, 레지스터 할당, 목적 코드의 주소 지정 방식, DAG 표현까지 살펴봅니다.
2026-03-19 · 17 분 읽기 #compiler#cs-fundamentals[컴파일러] 08. 구문 지시 번역 - SDD와 SDT
합성 속성과 상속 속성의 개념, 의존 그래프와 평가 순서, S-속성 정의와 L-속성 정의, 그리고 구문 지시 번역 체계(SDT)의 구현 방법을 다룹니다.
2026-03-19 · 13 분 읽기 #compiler#cs-fundamentals[컴파일러] 05. 유한 오토마타와 어휘 분석기 구현
NFA와 DFA의 개념, 정규 표현식에서 NFA로의 Thompson 구성, NFA에서 DFA로의 부분 집합 구성, DFA 최소화, 그리고 Lex 도구를 활용한 어휘 분석기 자동 생성을 다룹니다.
2026-03-19 · 13 분 읽기 #compiler#cs-fundamentals[컴파일러] 18. 프로시저 간 분석과 포인터 분석
프로시저 간 분석의 필요성, 호출 그래프, 문맥 민감성, 포인터 분석(Andersen vs Steensgaard), 별칭 분석, 흐름 민감/비민감 분석, 프로시저 간 데이터 흐름 분석을 다룹니다.
2026-03-19 · 17 분 읽기 #compiler#cs-fundamentals[컴파일러] 02. 프로그래밍 언어 기초와 컴파일러 기술 응용
프로그래밍 언어의 발전 역사, 정적/동적 구분, 스코프 규칙, 매개변수 전달 방식을 정리하고, 컴파일러 기술이 IDE 도구와 보안 분석 등에 어떻게 응용되는지 살펴봅니다.
2026-03-19 · 12 분 읽기 #compiler#cs-fundamentals[컴파일러] 15. 루프 최적화와 코드 이동
지배자와 지배자 트리, 자연 루프, 루프 불변 코드 검출과 이동, 유도 변수 검출과 제거, 루프 내 강도 감소, 루프 펼침 기법을 다룹니다.
2026-03-19 · 16 분 읽기 #compiler#cs-fundamentals[컴파일러] 12. 코드 생성 알고리즘과 레지스터 할당
단순 코드 생성 알고리즘, 레지스터/주소 디스크립터, DAG 기반 코드 생성, 트리 기반 최적 코드 생성, 그래프 컬러링을 이용한 레지스터 할당, 핍홀 최적화를 다룹니다.
2026-03-19 · 15 분 읽기 #compiler#cs-fundamentals[컴파일러] 09. 중간 코드 생성 - 3주소 코드와 타입 검사
구문 트리의 변형(DAG), 3주소 코드(쿼드러플, 트리플, SSA), 타입 표현식과 타입 검사, 타입 변환, 그리고 제어 흐름 번역과 백패칭 기법을 다룹니다.
2026-03-19 · 13 분 읽기 #compiler#cs-fundamentals[컴파일러] 06. 구문 분석 (1) - Top-Down 파싱과 LL 파서
파서의 역할과 문맥 자유 문법을 복습하고, 모호성 제거, 좌재귀 제거, 좌인수분해 기법을 다룹니다. 재귀 하강 파서, 예측 파서, FIRST/FOLLOW 집합, LL(1) 문법을 상세히 설명합니다.
2026-03-19 · 14 분 읽기 #compiler#cs-fundamentals[컴파일러] 03. 간단한 구문 지시 번역기 만들기
문법 정의, 유도, 파스 트리, 모호성 개념을 배우고, 연산자 우선순위와 결합법칙, 구문 지시 번역, 후위 표기법, 합성 속성을 활용한 간단한 번역기를 만들어 봅니다.
2026-03-19 · 12 분 읽기 #compiler#cs-fundamentals[컴파일러] 19. SSA 형식과 현대 컴파일러 최적화
SSA(Static Single Assignment) 형식의 개념, phi 함수, 지배 경계를 이용한 SSA 구성, SSA 기반 최적화(상수 전파, 죽은 코드 제거, 전역 값 번호화), SSA에서의 복원을 다룹니다.
2026-03-19 · 16 분 읽기 #compiler#cs-fundamentals[컴파일러] 16. 명령어 수준 병렬성과 스케줄링
명령어 수준 병렬성(ILP)의 개념, 파이프라이닝과 슈퍼스칼라 프로세서, 리스트 스케줄링, 소프트웨어 파이프라이닝, 레지스터 할당과 스케줄링의 관계, VLIW 아키텍처를 다룹니다.
2026-03-19 · 15 분 읽기 #compiler#cs-fundamentals[컴파일러] 13. 머신 독립 코드 최적화 기초
공통 부분식 제거, 죽은 코드 제거, 상수 폴딩, 루프 불변 코드 이동, 유도 변수, 강도 감소 등 주요 최적화 기법과 데이터 흐름 분석의 기초를 다룹니다.
2026-03-19 · 15 분 읽기 #compiler#cs-fundamentals[컴파일러] 10. 실행 시간 환경 - 스택, 힙, 가비지 컬렉션
프로그램 실행 시 메모리 구성, 스택 기반 활성 레코드와 호출 순서, 비지역 변수 접근 방법(접근 링크, 디스플레이), 힙 관리와 단편화, 그리고 가비지 컬렉션의 주요 알고리즘을 다룹니다.
2026-03-19 · 17 분 읽기 #compiler#cs-fundamentals