C C 編譯技術 程式生命週期

2022-08-22 00:21:16 字數 699 閱讀 9587

編譯的各個階段:

編譯過程可以粗略地劃分為:預處理階段、語言分析階段、彙編階段、優化階段和**生成階段。

預處理階段

語言分析階段

編譯器會將c/c++**刪去注釋和不必要的空格,以及從文字中提取符號等。

彙編階段

當源**經過校驗,其中不包括任何語法錯誤後,編譯器才會執行彙編階段。在這個階段中,編譯器會將標準的語言集合轉換成特定cpu指令集的語言集合。不同的cpu包含不同的功能性需求,通常包含不同的指令集、暫存器和中斷。

優化階段

當由源**生成最初版本的彙編**後,優化階段就開始了,這可以將程式的暫存器使用率最小化。此外,通過分析能夠**出實際上不需要執行的部分**,並將其刪去。

**生成階段

最後到生成編譯輸出目標檔案的階段,其中每乙個目標檔案對應乙個編譯單元。彙編指令(ascii)會在此階段轉換成對應機器指令(操作碼)的二進位制值,並寫入目標檔案的特定位置。

使用objdump工具輸出at&t(預設)和intel兩種風格彙編**。

objdump -d .o

objdump -d -m intel .o

目標檔案屬性

編譯過程的侷限性

為什麼編譯過程不能完成目標檔案的拼接任務呢?

鏈結過程的輸入是目標檔案的集合,鏈結器的最終任務是將獨立的節組合成最終的程式記憶體對映節,與此同時解析所有的引用。

小程式 生命週期

page 生命週期函式 監聽頁面載入 onload function options 生命週期函式 監聽頁面初次渲染完成 onready function 生命週期函式 監聽頁面顯示 onshow function 生命週期函式 監聽頁面隱藏 onhide function 生命週期函式 監聽頁面解...

iOS 程式生命週期

狀態名解釋 not running 應用還沒啟動或者應用發生中斷 inactive 應用正在前台執行 不接收事件 active 應用正在前台執行 接收事件 background 應用處於後台執行 程式在後台而且能執行 大多數程式進入這個狀態後會在在這個狀態上停留一會。時間到之後會進入掛起狀態 sus...

小程式生命週期

小程式分為應用 頁面和元件三個部分,所以小程式的生命週期涉及以下 onlaunch function options onshow function options onhide function onerror function msg onpagenotfound function res gl...