今天來(lái)學(xué)習(xí)開(kāi)發(fā)環(huán)境和編程語(yǔ)言。
CPU懂的機(jī)器語(yǔ)言
單片機(jī)的CPU從存儲(chǔ)器讀取程序,但是一次只能讀取一條指令,然后解釋每條指令,并執(zhí)行。存儲(chǔ)器中保存的內(nèi)容,不管是程序還是數(shù)據(jù),都是二進(jìn)制代碼“0”和“1”組成的字符串。指令二進(jìn)制代碼告訴CPU要做什么,而數(shù)據(jù)二進(jìn)制代碼則是CPU操作或處理指令時(shí)要使用的值。CPU的操作包含加、減運(yùn)算等指令。這些像密碼一樣排列的“0”和“1”字符串就是機(jī)器語(yǔ)言。比如圖1左邊顯示的就是一個(gè)機(jī)器語(yǔ)言指令,意思是“將2放入寄存器A(寄存器是CPU內(nèi)部的儲(chǔ)存區(qū)域)。
CPU總是按存儲(chǔ)器地址的順序讀取指令代碼,除非遇到跳躍指令。例如,如果復(fù)位后的地址是0000,則從0000開(kāi)始按0001、0002、0003的順序讀取并執(zhí)行指令。也可以說(shuō),一個(gè)程序就是按處理要求排列一系列的機(jī)器語(yǔ)言。
CPU只能理解如上所述的機(jī)器語(yǔ)言。因此,為了使CPU運(yùn)行,就必須使用機(jī)器語(yǔ)言的程序。但是,機(jī)器語(yǔ)言不易為人們識(shí)別和讀寫(xiě)。因此,人們用了更簡(jiǎn)單易懂的字符串來(lái)代替機(jī)器語(yǔ)言,這就是匯編語(yǔ)言。例如,在“給寄存器A賦值2”這樣的處理時(shí),如果用匯編語(yǔ)言來(lái)表示,就很簡(jiǎn)單,請(qǐng)看圖1的右邊部分。匯編語(yǔ)言中,用MOV字符串表示賦值,所以“給寄存器A賦值2”的處理就可用“MOV A,#02”表示。
圖1:機(jī)器語(yǔ)言和 匯編語(yǔ)言的比較
雖然匯編語(yǔ)言比機(jī)器語(yǔ)言更加簡(jiǎn)單易懂了,但是人們讀起來(lái)還是挺難理解的。而且,匯編語(yǔ)言還存在另一個(gè)問(wèn)題,就是不同的CPU,機(jī)器語(yǔ)言的描述方式也不同。因此,如果更換了CPU,就必須改寫(xiě)與機(jī)器語(yǔ)言有著密不可分關(guān)系的匯編語(yǔ)言,工作量比較大。(以上例子中的機(jī)器語(yǔ)言和匯編語(yǔ)言均為瑞薩的RL78族單片機(jī)中的語(yǔ)言。)
如上所述,每更換一次CPU都必須對(duì)程序進(jìn)行改編,不但造成生產(chǎn)性低下,還加重了編程人員的負(fù)擔(dān)。
人性化的C語(yǔ)言
能夠解決上述問(wèn)題的編程語(yǔ)言就是C語(yǔ)言。C語(yǔ)言具有不依存于特定的CPU,又具有程序移植性高等的特點(diǎn)。另外,由于編程時(shí)可使用人們熟悉的英文單詞,所以對(duì)編程人員來(lái)說(shuō)C語(yǔ)言是最容易使用的編程語(yǔ)言。下面我們將C語(yǔ)言和匯編語(yǔ)言做一個(gè)簡(jiǎn)單地比較。
圖2:匯編語(yǔ)言和C語(yǔ)言的比較
雖然C語(yǔ)言不依存于CPU而且還是人們最容易使用的編程語(yǔ)言,但對(duì)于CPU來(lái)說(shuō),C語(yǔ)言卻是一種完全無(wú)法理解的語(yǔ)言。因此,就需要一種可以將C語(yǔ)言翻譯為機(jī)器語(yǔ)言的軟件,這就是被稱(chēng)為編譯器 (編譯程序) 的軟件。 經(jīng)過(guò)編譯器翻譯的程序的文件格式被稱(chēng)為目標(biāo)文件格式。如果目標(biāo)文件格式最終沒(méi)有被配置到存儲(chǔ)器中,CPU就無(wú)法執(zhí)行該程序。
另外,近來(lái)由于程序越來(lái)越趨于復(fù)雜化,所以幾乎都采取了將一個(gè)程序分割為多個(gè)C語(yǔ)言程序文件的結(jié)構(gòu)。所以,還需要一個(gè)工具將多個(gè)目標(biāo)文件格式匯總成一個(gè)機(jī)器語(yǔ)言并配置到存儲(chǔ)器上,能夠擔(dān)當(dāng)起此重任的就是連接編輯程序(linkage editor,也被稱(chēng)為“l(fā)inker(鏈接器)”)。
-
cpu
+關(guān)注
關(guān)注
68文章
10863瀏覽量
211760 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136820 -
匯編語(yǔ)言
+關(guān)注
關(guān)注
14文章
409瀏覽量
35809
原文標(biāo)題:為什么原來(lái)每換一個(gè)CPU就必須改寫(xiě)程序,但現(xiàn)在不用了?
文章出處:【微信號(hào):weixin21ic,微信公眾號(hào):21ic電子網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論