← English articles
English · technology · advanced · 180 words · ~1 min

Compilers: From Source Code to Machine Code

คอมไพเลอร์: จากซอร์สโค้ดสู่คำสั่งเครื่อง
Compilers: From Source Code to Machine Code

A compiler translates high-level source code into optimized machine code through multiple analysis and transformation passes.

.
คอมไพเลอร์คือโปรแกรมที่แปลซอร์สโค้ดที่เขียนด้วยภาษาระดับสูงให้เป็นคำสั่งเครื่องที่โปรเซสเซอร์สามารถประมวลผลได้โดยตรง
, .
การแปลเกิดขึ้นในหลายเฟสที่ชัดเจน โดยแต่ละเฟสรับผิดชอบการวิเคราะห์หรือการแปลงที่เฉพาะเจาะจง
, .
ส่วนหน้า (front end) แยกวิเคราะห์ข้อความซอร์สให้เป็น abstract syntax tree จากนั้นตรวจสอบประเภทและแปลง AST เป็น intermediate representation เช่น LLVM IR
, .
intermediate representation นั้นไม่ขึ้นกับภาษา ซึ่งเป็นเหตุผลที่ภาษาต่าง ๆ หลายภาษาสามารถใช้ตัวเพิ่มประสิทธิภาพ LLVM เดียวกันได้
: ; ; .
ส่วนกลาง (middle end) ใช้ชุดของ optimization pass ได้แก่ dead code elimination ที่ลบคำสั่งซึ่งไม่มีการใช้ผลลัพธ์ inlining ที่แทนที่การเรียกใช้ฟังก์ชันด้วยเนื้อหาของฟังก์ชันนั้นเพื่อลด overhead และ loop vectorization ที่เขียนลูปแบบ scalar ใหม่เป็นการดำเนินการ SIMD
, .
ส่วนหลัง (back end) ทำการจัดสรรรีจิสเตอร์ — กำหนด virtual register ให้กับรีจิสเตอร์จริงที่มีจำกัดของ ISA เป้าหมาย — จากนั้นส่งออกคำสั่งเครื่องจริง โดยจัดการ instruction scheduling เพื่อลดการหยุดชะงักของไปป์ไลน์
; .
คอมไพเลอร์ยุคใหม่มีโครงสร้างเป็นส่วนประกอบของเครื่องมือที่นำกลับมาใช้ใหม่ได้ ทั้ง LLVM และ GCC รองรับภาษาต้นทางและสถาปัตยกรรมเป้าหมายหลายสิบรายการโดยใช้โครงสร้างพื้นฐานของตัวเพิ่มประสิทธิภาพร่วมกัน
colour key NounVerbAdjectiveAdverbPronounParticleConjunctionDeterminer