728x90
반응형

LLVM 7

Compiler(컴파일러)

개요컴파일러는 사람이 이해하기 쉬운 고급 프로그래밍 언어를 컴퓨터가 실행할 수 있는 형태로 바꾸는 핵심 소프트웨어입니다. C, C++, Rust, Go, Java, Swift와 같은 언어 생태계의 기반에 있으며, 단순한 번역기를 넘어 최적화, 오류 검출, 플랫폼 추상화, 보안 강화까지 담당합니다. 현대 소프트웨어 개발에서 컴파일러는 실행 성능과 개발 생산성을 동시에 좌우하는 중요한 기술 요소입니다.항목내용핵심 역할소스 코드를 목적 코드, 바이트코드, 중간 표현(IR) 등으로 변환주요 기능구문 분석, 의미 분석, 최적화, 코드 생성, 오류 검출활용 분야시스템 소프트웨어, 임베디드, 게임 엔진, 서버, 모바일, 언어 런타임한줄 첨언: 컴파일러는 단순 변환 도구가 아니라 성능과 안정성을 설계하는 엔진입니다.1..

Topic 2026.07.05

Mojo(Modular AI Programming Language)

개요Mojo는 Modular사가 공개한 차세대 프로그래밍 언어로, Python의 생산성과 C/C++ 수준의 시스템 성능을 동시에 제공하는 것을 목표로 한다. 특히 AI 및 머신러닝 워크로드에 최적화되어 있으며, MLIR(Multi-Level Intermediate Representation)을 기반으로 설계되어 컴파일 단계에서 고도화된 최적화를 수행한다. Python 문법과 높은 호환성을 유지하면서도 정적 타입 시스템과 메모리 제어 기능을 추가하여 고성능 연산 환경을 구현한다.1. 개념 및 정의Mojo는 AI 중심 워크로드를 위해 설계된 시스템 프로그래밍 언어로, Python 생태계를 확장하는 형태로 개발되었다. 인터프리터 기반 실행 모델의 한계를 극복하고, 컴파일 기반 아키텍처를 통해 GPU, TPU,..

Topic 2026.02.28

PGO (Profile-Guided Optimization)

개요PGO(Profile-Guided Optimization)는 프로그램의 실제 실행 시 수집한 정보를 바탕으로 컴파일러가 코드 최적화를 수행하는 기술이다. 전통적인 정적 컴파일 최적화 방식과 달리, PGO는 런타임 데이터를 활용하여 분기 예측, 인라이닝, 루프 최적화 등의 결정을 더 정확하게 수행할 수 있다.1. 개념 및 정의 항목 설명 정의애플리케이션 실행 시 수집한 프로파일 데이터를 이용하여 최적화하는 컴파일 기술목적실행 경로의 특성을 반영한 맞춤형 성능 최적화 수행필요성정적 분석만으로는 알 수 없는 실제 사용 패턴에 기반한 고도화된 성능 개선PGO는 GCC, Clang/LLVM, MSVC 등 다양한 컴파일러에서 지원된다.2. 특징특징설명비교동적 실행 정보 사용분기, 함수 호출 빈도 등 분석정적 ..

Topic 2026.01.09

libFuzzer

개요libFuzzer는 LLVM 프로젝트에 포함된 퍼징(fuzzing) 프레임워크로, 인프로세스(in-process) 방식으로 대상 함수를 반복 호출하며 입력 데이터를 퍼징함으로써 잠재적인 충돌, 취약점, 예외 상황 등을 발견한다. 특히 클로즈드 루프 방식으로 코드 커버리지를 최대화하며, 정적 분석과 연계가 용이하다.1. 개념 및 정의 항목 정의LLVM에서 제공하는 클로즈드 루프 기반의 인프로세스 퍼징 프레임워크목적소프트웨어의 취약점 및 예외 상황 자동 탐지필요성수동 테스트 한계를 극복하고 보안·안정성 확보를 자동화libFuzzer는 C/C++ 코드 테스트에 특히 최적화되어 있다.2. 특징특징설명비교In-Process Fuzzing대상 함수 내에서 직접 호출 및 실행 반복AFL은 fork 기반 외부 실..

Topic 2026.01.09

MLIR (Multi-Level Intermediate Representation)

개요MLIR(Multi-Level Intermediate Representation)은 Google이 TensorFlow/XLA 컴파일러 최적화를 위해 개발한 범용 컴파일러 인프라 구조로, 다양한 수준의 연산(High-Level → Low-Level)을 통합적으로 표현하고 최적화할 수 있는 중간 표현체계(IR)이다. MLIR은 단순히 TensorFlow 전용 기술이 아니라, **모든 도메인별 언어(DSL)**와 하드웨어 타깃 간의 다리 역할을 수행하는 범용 프레임워크로 발전하고 있다.1. 개념 및 정의MLIR은 이름 그대로 **‘다단계 중간 표현(Multi-Level IR)’**을 의미한다. 전통적인 컴파일러의 단일 IR 구조와 달리, MLIR은 서로 다른 수준의 추상화 계층(예: 그래프 수준, 연산 수..

Topic 2025.12.07

eBPF CO-RE (Compile Once – Run Everywhere)

개요eBPF(extended Berkeley Packet Filter)는 리눅스 커널 내부에서 안전하고 고성능으로 사용자 정의 코드를 실행할 수 있게 해주는 기술로, 네트워크, 보안, 성능 모니터링 등에 광범위하게 활용됩니다. 그러나 기존 eBPF 프로그램은 커널 버전과 구조체 변경에 따라 재컴파일이 필요하다는 이식성 한계가 있었습니다.CO-RE(Compile Once – Run Everywhere)는 이러한 문제를 해결하기 위해 등장한 기술로, 단 한 번의 컴파일로 다양한 커널 버전에서 eBPF 프로그램을 안전하게 실행할 수 있도록 지원합니다.1. 개념 및 정의 항목 설명 정의CO-RE는 eBPF 프로그램을 한 번 컴파일하면 여러 커널 버전에서 수정 없이 실행 가능하게 하는 기술입니다.목적커널 구조체..

Topic 2025.09.06

Pointer Authentication (PAC)

개요**Pointer Authentication (PAC)**은 ARMv8.3-A 아키텍처부터 도입된 런타임 메모리 보안 기능으로, 포인터 무결성을 검증하여 메모리 오염 공격을 방지합니다. PAC는 특히 ROP(Return-Oriented Programming), JOP(Jump-Oriented Programming) 같은 제어 흐름 변조 공격(CFI)을 방어하는 데 효과적인 최신 하드웨어 기반 보안 기술입니다.1. 개념 및 정의PAC는 프로그램 실행 중 포인터에 디지털 서명(Signature)을 추가하고, 포인터가 사용될 때 해당 서명을 검증함으로써 포인터 위조를 탐지 및 차단하는 메커니즘입니다. ARM64의 주소 공간에서 사용하지 않는 상위 비트를 활용해 인증 코드를 삽입합니다.PAC는 인증 실패 시..

Topic 2025.05.17
728x90
반응형