編譯後
『壹』 c璇璦緇忚繃緙栬瘧鍚庣敓鎴愭枃浠剁殑鍚庣紑鏄
C璇璦緇忚繃緙栬瘧鍚庣敓鎴愭枃浠剁殑鍚庣紑鏄鈥.obj鈥濄
褰揅璇璦婧愪唬鐮佽緙栬瘧鍚庯紝閫氬父浼氱敓鎴愪竴涓鈥.o鈥濓紙object file錛夋枃浠躲傝繖涓鏂囦歡鍖呭惈浜嗙紪璇戝櫒鎵浜х敓鐨勬満鍣ㄤ唬鐮侊紝浣嗘槸瀹冭繕娌℃湁琚榪炴帴鍒板叾浠栨ā鍧楁垨搴撲腑銆傜浉搴斿湴錛屽湪涓嶅悓鐨勬搷浣滅郴緇熶笂鍙鑳戒細鏈変笉鍚岀殑鍚庣紑鍚嶅拰浜岃繘鍒舵牸寮忋備緥濡傦紝Windows涓婄殑Visual C++緙栬瘧鍣ㄤ嬌鐢ㄢ.obj鈥濅綔涓虹洰鏍囨枃浠剁殑鎵╁睍鍚嶃
闄や簡鐩鏍囨枃浠朵箣澶栵紝榪樻湁鍏朵粬綾誨瀷鐨勬枃浠朵篃鍙鑳藉湪緙栬瘧榪囩▼涓鍑虹幇銆備緥濡傦紝婧愭枃浠跺寘鍚浜嗕唬鐮佺殑鍘熷嬫枃鏈錛涘ご鏂囦歡鍖呭惈浜嗙▼搴忎腑浣跨敤鍒扮殑鍑芥暟鍜屽彉閲忕殑澹版槑銆傝繖浜涙枃浠舵墿灞曞悕閫氬父涓衡.c鈥濆拰鈥.h鈥濄
C璇璦鐨勪紭鐐圭畝榪
C璇璦鐨勮捐$洰鏍囨槸鎻愪緵涓縐嶈兘浠ョ畝鏄撶殑鏂瑰紡緙栬瘧銆佸勭悊浣庣駭瀛樺偍鍣ㄣ佷粎浜х敓灝戦噺鐨勬満鍣ㄧ爜浠ュ強涓嶉渶瑕佷換浣曡繍琛岀幆澧冩敮鎸佷究鑳借繍琛岀殑緙栫▼璇璦銆侰璇璦鎻忚堪闂棰樻瘮奼囩紪璇璦榪呴熴佸伐浣滈噺灝忋佸彲璇繪уソ銆佹槗浜庤皟璇曘佷慨鏀瑰拰縐繪嶏紝鑰屼唬鐮佽川閲忎笌奼囩紪璇璦鐩稿綋銆侰璇璦涓鑸鍙姣旀眹緙栬璦浠g爜鐢熸垚鐨勭洰鏍囩▼搴忔晥鐜囦綆10%鈥20%銆傚洜姝わ紝C璇璦鍙浠ョ紪鍐欑郴緇熻蔣浠躲
褰撳墠闃舵碉紝鍦ㄧ紪紼嬮嗗煙涓錛孋璇璦鐨勮繍鐢ㄩ潪甯鎬箣澶氾紝瀹冨吋欏句簡楂樼駭璇璦鍜屾眹緙栬璦鐨勪紭鐐癸紝鐩歌緝浜庡叾浠栫紪紼嬭璦鍏鋒湁杈冨ぇ浼樺娍銆傝$畻鏈虹郴緇熻捐′互鍙婂簲鐢ㄧ▼搴忕紪鍐欐槸C璇璦搴旂敤鐨勪袱澶ч嗗煙銆傚悓鏃訛紝C璇璦鐨勬櫘閫傝緝寮猴紝鍦ㄨ稿氳$畻鏈烘搷浣滅郴緇熶腑閮借兘澶熷緱鍒伴傜敤錛屼笖鏁堢巼鏄捐憲銆侰璇璦鎷ユ湁緇忚繃浜嗘極闀垮彂灞曞巻鍙茬殑瀹屾暣鐨勭悊璁轟綋緋伙紝鍦ㄧ紪紼嬭璦涓鍏鋒湁涓捐凍杞婚噸鐨勫湴浣嶃
『貳』 c璇璦緙栬瘧鍚庣殑鏂囦歡鍚庣紑鏄浠涔堬紵
C璇璦婧愭枃浠跺悗緙鍚嶆槸.c錛岀紪璇戠敓鎴愮殑鏂囦歡鍚庣紑鍚嶆槸.obj錛岃繛鎺ュ悗鍙鎵ц屾枃浠剁殑鍚庣紑鍚嶆槸.exe銆
婧愭枃浠剁殑鍚庣紑浠呬粎鏄涓轟簡琛ㄦ槑璇ユ枃浠朵腑淇濆瓨鐨勬槸鏌愮嶈璦鐨勪唬鐮侊紙渚嬪.c鏂囦歡涓淇濆瓨鐨勬槸C璇璦浠g爜錛夛紝榪欐牱紼嬪簭鍛樻洿鍔犲規槗鍖哄垎錛岀紪璇戝櫒涔熸洿鍔犲規槗璇嗗埆錛屽畠騫朵笉浼氬艱嚧璇ユ枃浠剁殑鍐呴儴鏍煎紡鍙戠敓鏀瑰彉銆
鎵╁睍璧勬枡
C璇璦鏄涓縐嶇粨鏋勫寲璇璦錛屽畠鏈夌潃娓呮櫚鐨勫眰嬈★紝鍙鎸夌収妯″潡鐨勬柟寮忓圭▼搴忚繘琛岀紪鍐欙紝鍗佸垎鏈夊埄浜庣▼搴忕殑璋冭瘯錛屼笖c璇璦鐨勫勭悊鍜岃〃鐜拌兘鍔涢兘闈炲父鐨勫己澶с
渚濋潬闈炲父鍏ㄩ潰鐨勮繍綆楃﹀拰澶氭牱鐨勬暟鎹綾誨瀷錛屽彲浠ヨ交鏄撳畬鎴愬悇縐嶆暟鎹緇撴瀯鐨勬瀯寤猴紝閫氳繃鎸囬拡綾誨瀷鏇村彲瀵瑰唴瀛樼洿鎺ュ誨潃浠ュ強瀵圭‖浠惰繘琛岀洿鎺ユ搷浣滐紝鍥犳ゆ棦鑳藉熺敤浜庡紑鍙戠郴緇熺▼搴忥紝涔熷彲鐢ㄤ簬寮鍙戝簲鐢ㄨ蔣浠躲
C璇璦鏄鏅閫傛ф渶寮虹殑涓縐嶈$畻鏈虹▼搴忕紪杈戣璦錛屽畠涓嶄粎鍙浠ュ彂鎸ュ嚭楂樼駭緙栫▼璇璦鐨勫姛鐢錛岃繕鍏鋒湁奼囩紪璇璦鐨勪紭鐐廣
『叄』 c璇璦紼嬪簭緇忚繃緙栬瘧鍚庣敓鎴愭枃浠剁殑鍚庣紑鏄
C璇璦紼嬪簭緇忚繃緙栬瘧鍚庣敓鎴愮殑鏂囦歡鍚庣紑閫氬父鏄<strong>.obj</strong>鎴<strong>.o</strong>銆
榪欎簺鍚庣紑鏄瀵硅薄鏂囦歡錛坥bject file錛夌殑鍚庣紑錛屽畠浠鏄婧愪唬鐮佺紪璇戝悗鐨勪腑闂存枃浠訛紝閫氬父鍖呭惈浜嗕竴浜涙満鍣ㄤ唬鐮佸拰絎﹀彿琛ㄤ俊鎮銆
涓轟簡鏇村ソ鍦扮悊瑙h繖涓闂棰橈紝鎴戜滑闇瑕佺煡閬撶紪璇戞槸涓涓灝嗘簮浠g爜杞鎹涓烘満鍣ㄤ唬鐮佺殑榪囩▼銆傚湪緙栬瘧榪囩▼涓錛岀紪璇戝櫒浼氬皢婧愪唬鐮佷腑鐨勬寚浠ゅ拰鏁版嵁鎻愬彇鍑烘潵錛岀劧鍚庢寜鐓х壒瀹氱殑鏍煎紡閲嶆柊緇勭粐鎴愭満鍣ㄤ唬鐮併傝繖涓榪囩▼閫氬父浼氱敓鎴愪竴涓鎴栧氫釜瀵硅薄鏂囦歡銆
涓轟簡浣跨瓟妗堥氫織鏄撴噦錛屾垜浠鍙浠ヨ繖鏍瘋В閲婏細褰撲綘鍦ㄧ數鑴戜笂緙栧啓C璇璦紼嬪簭鏃訛紝浣犻渶瑕佷竴涓緙栬瘧鍣ㄦ潵灝嗕綘鐨勬簮浠g爜杞鎹涓哄彲浠ュ湪浣犵殑鐢佃剳鎴栫綉緇滀笂榪愯岀殑紼嬪簭銆傜紪璇戝櫒浼氬皢浣犵殑婧愪唬鐮佽漿鍖栦負涓縐嶇壒孌婄殑鏈哄櫒璇璦錛岃繖縐嶈璦鍙浠ョ洿鎺ヨ璁$畻鏈虹‖浠剁悊瑙e苟鎵ц屻傝繖涓鐗規畩鐨勬満鍣ㄨ璦鏂囦歡閫氬父琚縐頒負瀵硅薄鏂囦歡錛屽洜涓哄畠浠鍖呭惈浜嗙紪璇戝悗鐨勪唬鐮佸拰涓浜涘叾浠栫殑淇℃伅錛屽傜﹀彿琛ㄧ瓑銆
鎵浠ワ紝褰撲綘緙栬瘧涓涓狢璇璦紼嬪簭鏃訛紝浣犻氬父浼氬緱鍒頒竴涓鎴栧氫釜浠<strong>.obj</strong>鎴<strong>.o</strong>涓哄悗緙鐨勬枃浠躲傝繖浜涙枃浠跺寘鍚浜嗙紪璇戝悗鐨勪唬鐮佸拰鍏朵粬淇℃伅錛屽畠浠鍙浠ヨ閾炬帴鍣ㄧ敤鏉ュ壋寤烘渶緇堢殑鍙鎵ц屾枃浠躲
『肆』 計算機程序中,用高級語言編寫的程序經編譯後產生的程序叫什麼
高級語言編寫的代碼經過編譯後就是可執行程序,高級語言到可執行文件主要有七個個過程。
高級語言編譯的七個過程:
預處理,詞法分析,語法分析,語義分析,中間代碼產生,代碼優化,目標代碼產生。
下面對這幾個過程詳細講解:
1、預處理:
對原文件進行預處理,比如頭文件,導入的模塊,宏定義等進行處理;
2、詞法分析:
詞法分析是第一階段,這個階段的任務是從左到右一個字元一個字元的讀入源程序,對構成源程序的字元流進行掃描和分解,從而識別出一個個單詞。
3、語法分析:
語法分析的任務是在詞法分析的基礎上將單詞程序分解成各位語法短語。
4、語義分析:
語義分析是審查源程序有無語義錯誤,為代碼生成階段收集類型信息。
5、中間代碼生成:
在進行了上述的語法分析階段等工作之後,有的編譯程序將源程序變成一種內部表示形式,這種內部表示形式叫做中間語言或中間代碼。中間代碼生成階段要在語法和語義分析的基礎上,將源程序進一步變為一種內部表示形式,它通常易於生成、易於翻譯成目標代碼,不過不是所有的語言都必須經過這一步。
6、代碼優化:
這一階段的任務是對前一階段產生的中間代碼進行變換或進行改造,目的是使生成的目標代碼更為高效。代碼優化階段,對前階段生成的中間代碼進行變換或改造,以便生成目標代碼時更加節省時間和空間,這一工作也不是必須的。
7、目標代碼生成:
這一階段的任務是吧中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令代碼或匯編指令代碼。