~c語(yǔ)言 C語(yǔ)言、匯編語(yǔ)言、機(jī)器指令、CPU之間是怎么聯(lián)系起來(lái)的?
C語(yǔ)言、匯編語(yǔ)言、機(jī)器指令、CPU之間是怎么聯(lián)系起來(lái)的?CPU的全稱(chēng)是中央處理器,它是計(jì)算機(jī)操作的核心。根據(jù)所采用的不同技術(shù),CPU分為x86、x64、arm、DSP、單片機(jī)等不同的體系結(jié)構(gòu)。每種CP
C語(yǔ)言、匯編語(yǔ)言、機(jī)器指令、CPU之間是怎么聯(lián)系起來(lái)的?
CPU的全稱(chēng)是中央處理器,它是計(jì)算機(jī)操作的核心。根據(jù)所采用的不同技術(shù),CPU分為x86、x64、arm、DSP、單片機(jī)等不同的體系結(jié)構(gòu)。每種CPU上都有一組特定的指令集,通常稱(chēng)為機(jī)器指令。直接用機(jī)器指令編寫(xiě)的程序是機(jī)器語(yǔ)言程序。
從理論上講,任何程序都可以直接用機(jī)器語(yǔ)言編寫(xiě)(在早期,程序比較簡(jiǎn)單),程序可以直接運(yùn)行。然而,對(duì)于程序員來(lái)說(shuō),使用機(jī)器語(yǔ)言編程的要求很高,代碼不易移植,不便于人們直接閱讀。所以人們發(fā)明了一組符號(hào),用符號(hào)來(lái)表示這些機(jī)器指令,這就是匯編語(yǔ)言。用匯編語(yǔ)言編寫(xiě)的程序不能直接由計(jì)算機(jī)運(yùn)行。它需要一個(gè)名為匯編程序的程序被轉(zhuǎn)換成機(jī)器語(yǔ)言才能在特定的機(jī)器上運(yùn)行。
C語(yǔ)言比匯編語(yǔ)言更高級(jí),用C語(yǔ)言編寫(xiě)的程序不能直接在計(jì)算機(jī)上運(yùn)行。它要求編譯器將C語(yǔ)言代碼轉(zhuǎn)換成機(jī)器語(yǔ)言。此過(guò)程分為幾個(gè)子步驟,如下圖所示。
為了使主要問(wèn)題更加完善,這里添加了兩個(gè)概念,鏈接器和反匯編。
這些目標(biāo)文件也是機(jī)器指令,但它們?nèi)鄙僖恍┍匾男畔?,無(wú)法直接運(yùn)行。鏈接器需要將這些文件與一些庫(kù)文件和可執(zhí)行文件頭信息鏈接在一起,形成一個(gè)可執(zhí)行文件(windows為PE格式,Linux為ELF格式)。
通常,在查看二進(jìn)制文件(對(duì)象文件或可行性文件)時(shí),機(jī)器指令不會(huì)直接顯示,而是以匯編語(yǔ)言顯示。這是因?yàn)樵谶@個(gè)過(guò)程中有一個(gè)反匯編程序,它將機(jī)器指令轉(zhuǎn)換成匯編語(yǔ)言,其功能與匯編過(guò)程正好相反。
C語(yǔ)言究竟是一門(mén)怎樣的語(yǔ)言?
你好,我是梁小偉。我知道各種各樣的問(wèn)題。我很高興回答你的問(wèn)題。
C語(yǔ)言是計(jì)算機(jī)編程中常用的匯編語(yǔ)言,應(yīng)用廣泛。
我們需要學(xué)會(huì)像人類(lèi)一樣說(shuō)話。
計(jì)算機(jī)也有自己的語(yǔ)言。
學(xué)習(xí)計(jì)算機(jī)的語(yǔ)言,可以使計(jì)算機(jī)實(shí)現(xiàn)更高級(jí)的功能。
學(xué)會(huì)了計(jì)算機(jī)語(yǔ)言,我們可以:做軟件,做游戲,等等。
我希望我的回答能幫助你。