
【計】 compiler target machine
【計】 APL compiler APL; BASIC compiler; compile routine; compiler
compiling program; compiling routine
【經】 compiler
【計】 target machine
編譯程式目标機(Target Machine of Compiler)是編譯原理中的核心概念,指編譯器生成的目标代碼所針對運行的計算機系統或執行環境。以下從漢英詞典角度分層解釋其詳細含義與技術要點:
編譯程式(Compiler)
将高級語言源代碼(如C/C++)整體翻譯為等效的低級語言(如彙編或機器碼)的程式。
英文對照:Compiler - A program that translates source code written in a high-level language into object code.
目标機(Target Machine)
指最終執行生成代碼的硬件平台或虛拟機環境,其指令集架構(ISA)、操作系統和運行時庫決定了編譯器的代碼生成策略。
英文對照:Target Machine - The hardware/software environment for which the compiler generates executable code.
核心定義
編譯程式目标機是編譯器後端設計的基準平台,其特性(如寄存器數量、内存尋址模式、指令集約束)直接影響代碼優化策略和可執行文件格式(如ELF、PE)。
示例:針對ARM架構的目标機需生成Thumb指令,而x86目标機則生成IA-32機器碼。
與宿主機的區别
跨平台編譯(Cross-compilation)即宿主機與目标機不同的場景。
指令集架構(ISA)
包括RISC(精簡指令集)或CISC(複雜指令集),決定編譯器如何選擇指令序列。
來源:計算機體系結構标準(如IEEE-CS教材)
操作系統與ABI
應用程式二進制接口(ABI)規範函數調用約定、系統調用號等,影響鍊接庫與系統交互。
來源:System V ABI文檔(x86-64架構)
内存與寄存器約束
寄存器數量(如x86僅有16個通用寄存器)和内存對齊要求,驅動編譯器的寄存器分配算法。
來源:《編譯原理》(龍書)第8章
類型 | 實例 | 編譯器適配示例 |
---|---|---|
物理硬件平台 | x86-64 CPU, ARM Cortex-M | GCC的-march=armv8-a 編譯選項 |
虛拟機環境 | JVM, WebAssembly VM | Java編譯器生成字節碼 |
模拟器環境 | QEMU, ROS模拟器 | 嵌入式開發交叉編譯至虛拟目标機 |
編譯原理經典定義
“目标機是編譯器後端代碼生成所依賴的機器模型,其指令集和系統特性決定了輸出代碼的形式。”
——《Compilers: Principles, Techniques, and Tools》(龍書),
工業标準實踐
GCC編譯器的目标機配置通過--target
參數指定,支持200+種目标架構(見GNU官方文檔)。
來源:GCC Manual, Target Configuration Section
學術機構解釋
劍橋大學計算機實驗室定義目标機為“編譯器輸出代碼的運行時執行環境”。
來源:University of Cambridge, Compiler Design Lecture Notes
編譯器将中間表示(IR)映射到目标機指令的過程可抽象為:
$$ begin{aligned} text{IR} xrightarrow{text{指令選擇}} & text{目标機指令序列} xrightarrow{text{寄存器分配}} & text{物理寄存器映射} xrightarrow{text{指令調度}} & text{流水線優化代碼} end{aligned} $$
推導自《現代編譯器的代碼生成技術》(ACM Computing Surveys)
“編譯程式目标機”這一表述需要拆解為兩個核心概念來理解:
編譯程式(Compiler) 指将高級編程語言源代碼轉換為計算機可執行代碼的翻譯程式。其工作流程分為詞法分析、語法分析、語義分析、中間代碼生成、優化和目标代碼生成等階段。
目标機(Target Machine) 指編譯生成的可執行代碼最終運行的計算機環境,包含兩個維度:
二者關系: 編譯程式在代碼生成階段會根據目标機的特性進行適配,例如:
擴展說明: 當進行交叉編譯時,編譯程式的運行平台(宿主機)與目标機不同,例如在x86電腦上生成樹莓派(ARM架構)的可執行程式。這種情況下,編譯器需要特殊配置來識别目标機參數。
【别人正在浏覽】