讓我們將以下程序視為用C++編寫的示例程序。
步驟1:預處理器將源代碼轉換為擴展代碼。
當您運行程序時,源代碼首先被發送到稱為預處理器的工具。預處理器主要做兩件事:
??它會從程序中刪除注釋。
??它擴展了預處理器指令,如宏或文件包含。
??它最終將my-file.cpp或my-file.c轉換為包含擴展源代碼(或簡稱為擴展代碼)的my-file.i文件。
????剛才發生了什么?
????宏#define PI 3.14被擴展,即它在area()方法中用3.14替換了PI。
????文件包含#include<iostream>已展開,即它被文件iostream中存在的實際代碼替換。
????源代碼(myfile.cpp)被轉換為擴展代碼(myfile.i)。
步驟2:編譯器將擴展代碼轉換為匯編代碼。
接下來是編譯器的作用。編譯器做兩件事:
??它檢查程序是否存在語法錯誤。
??如果沒有發現錯誤,它會將擴展代碼轉換為匯編代碼。
??基本上,擴展代碼my-file.i被轉換為包含匯編代碼的file.s。
步驟3:匯編程序將匯編代碼轉換為目標代碼。
在此步驟中,下一個名為Assembler的工具將Assembly代碼轉換為Object代碼。
目標代碼也稱為字節碼、二進制代碼或計算機可理解的機器級代碼。
在windows上,包含目標代碼的文件將是my-file.obj。
在macOS和Linux上,包含目標代碼的文件將是my file.o。
步驟4:鏈接器將目標代碼轉換為可執行代碼。
在此步驟中,名為Linker的工具將目標代碼轉換為可執行代碼,即可執行文件my-file.exe。
步驟5:最后,加載器將可執行文件加載到內存中。
在最后一步中,加載器將可執行文件加載到內存中,程序開始在可執行環境中運行。