日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
深入淺出LinuxFPI編譯原理(linuxfpic)

linux 現(xiàn)在在開發(fā)PC軟件、嵌入式開發(fā)以及移動設(shè)備軟件方面已經(jīng)大行其道,而編譯原理也是其中重要一環(huán)。所謂編譯原理就是將人們編寫的源代碼轉(zhuǎn)換成為機器可以識別的二進制代碼(0、1序列),以便能夠讓計算機執(zhí)行。

(編譯原理著重于如何將源代碼轉(zhuǎn)換為可執(zhí)行的二進制代碼)

要理解 Linux 編譯原理,我們首先要理解編譯過程,Linux 編譯過程有3步:

1. 預編譯:此階段包括將命令行參數(shù)解析為適當?shù)膮?shù),從源文件中包含預處理代碼,以及處理宏替換等步驟。它將源代碼預處理,將輸出轉(zhuǎn)換為它可以由編譯器理解的簡單格式。

“`C

#include

int main(){

int a = 10;

printf(“a=%d\n”,a);

return 0;

}


在預編譯階段,將會進行代碼的預處理,如上面的代碼中的`#include`宏會被替換為`stdio.h`的頭文件,并且編譯器會在編譯任務(wù)中加入對該頭文件的編譯任務(wù)。

2. 編譯:此階段將源代碼轉(zhuǎn)換為機器指令,從而使源代碼易于理解和執(zhí)行。

```C
.L.text:0000000000400480 ; ============= segment type: Pure code
.L.text:0000000000400480
.L.text:0000000000400480 ; -- File Contents of /usr/include/stdio.h:
.L.text:0000000000400480
.L.text:0000000000400480 movl $0xa, %esi
.L.text:0000000000400487 mov $0x4005e0, %edi
.L.text:000000000040048c call 0x400400

在編譯階段,將源代碼轉(zhuǎn)換為機器指令,如上面的代碼是為了實現(xiàn) printf 函數(shù)的調(diào)用,將會生成多條匯編指令,例如`movl`、`mov`以及`call`,它們可以被CPU執(zhí)行來實現(xiàn) printf 函數(shù)的功能。

3. 鏈接:此階段包括將編譯生成的可重定位目標文件連接在一起,從而生成最終的可執(zhí)行文件。

“`asm

ff 25 00 a0 40 00 jmp *0x00400a0


在鏈接階段,將會為可重定位的文件生成可執(zhí)行的文件,比如上面的指令` jmp`就是用于跳轉(zhuǎn)到某個指定的地址,當遇到此指令時,CPU會定位轉(zhuǎn)到指定的地址,繼續(xù)執(zhí)行下去。

因此,Linux 編譯原理由這三個步驟組成,分別是預編譯、編譯和鏈接,上述步驟完成之后,就能夠生成可執(zhí)行文件,以便讓計算機去執(zhí)行程序??梢哉f,了解 Linux 編譯原理有助于開發(fā)者更好的理解它的編寫流程,并且更加高效地開發(fā) Linux 平臺的程序。

創(chuàng)新互聯(lián)網(wǎng)絡(luò)推廣網(wǎng)站建設(shè),網(wǎng)站設(shè)計,網(wǎng)站建設(shè)公司,網(wǎng)站制作,網(wǎng)頁設(shè)計,1500元定制網(wǎng)站優(yōu)化全包,先排名后付費,已為上千家服務(wù),聯(lián)系電話:13518219792


網(wǎng)頁標題:深入淺出LinuxFPI編譯原理(linuxfpic)
轉(zhuǎn)載來于:http://www.dlmjj.cn/article/cddhoio.html