匯編語言教程文件后綴大小寫S區(qū)別分析詳解
一、大小寫后綴的區(qū)別
.s 匯編語言源程序;匯編
.S 匯編語言源程序;預(yù)處理,匯編
小寫的s文件,在后期階段不在進(jìn)行預(yù)處理操作,所以我們不能在這里面寫預(yù)處理的語句在里面
大寫的S文件,還會進(jìn)行預(yù)處理、匯編等操作,所以我們可以在這里面加入預(yù)處理的命令
二、編譯的相關(guān)流程
預(yù)處理(Pre-Processing)-->編譯(Compiling)-->匯編(Assembling)-->鏈接(Linking)
1、預(yù)處理器
根據(jù)以字符#開頭的命令(directives),修改原始的C程序。
這個階段并不會去檢查代碼的錯誤,只會把#的語句轉(zhuǎn)成C代碼。
2、編譯階段
在這個階段中,Gcc首先要檢查代碼的規(guī)范性、是否有語法錯誤等,以確定代碼的實(shí)際要做的工作,在檢查無誤后,Gcc把代碼翻譯成匯編語言。用戶可以使用”-S”選項來進(jìn)行查看,該選項只進(jìn)行編譯而不進(jìn)行匯編,生成匯編代碼。匯編語言是非常有用的,它為不同高級語言不同編譯器提供了通用的語言。如:C編譯器和Fortran編譯器產(chǎn)生的輸出文件用的都是一樣的匯編語言。
3、匯編階段
匯編階段是把編譯階段生成的”.s”文件轉(zhuǎn)成目標(biāo)文件,讀者在此可使用選項”-c”就可看到匯編代碼已轉(zhuǎn)化為”.o”的二進(jìn)制目標(biāo)代碼了。
4、鏈接階段
將庫函數(shù)(頭文件中用到的)等鏈接到目標(biāo)文件中。
在成功編譯之后,就進(jìn)入了鏈接階段。在這里涉及到一個重要的概念:函數(shù)庫
"stdio.h"中也只有該函數(shù)的聲明,而沒有定義函數(shù)的實(shí)現(xiàn),那么,是在哪里實(shí)現(xiàn)”printf”這些庫函數(shù)的呢?最后的答案是:系統(tǒng)把這些函數(shù)實(shí)現(xiàn)都被做到名為libc.so.6的庫文件中去了,在沒有特別指定時,gcc會到系統(tǒng)默認(rèn)的搜索路徑”/usr/lib”下進(jìn)行查找,也就是鏈接到libc.so.6庫函數(shù)中去,這樣就能實(shí)現(xiàn)函數(shù)”printf” 了,而這也就是鏈接的作用。
函數(shù)庫一般分為靜態(tài)庫和動態(tài)庫兩種。靜態(tài)庫是指編譯鏈接時,把庫文件的代碼全部加入到可執(zhí)行文件中,因此生成的文件比較大,但在運(yùn)行時也就不再需要庫文件了。其后綴名一般為”.a”。動態(tài)庫與之相反,在編譯鏈接時并沒有把庫文件的代碼加入到可執(zhí)行文件中,而是在程序執(zhí)行時由運(yùn)行時鏈接文件加載庫,這樣可以節(jié)省系統(tǒng)的開銷。動態(tài)庫一般后綴名為”.so”,如前面所述的libc.so.6就是動態(tài)庫。gcc在編譯時默認(rèn)使用動態(tài)庫。
完成了鏈接之后,gcc就可以生成可執(zhí)行文件。
以上就是匯編文件后綴.s與.S區(qū)別分析詳解的詳細(xì)內(nèi)容,更多關(guān)于匯編文件后綴.s與.S的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
一位數(shù)乘法的匯編語言實(shí)現(xiàn)方法
這篇文章主要介紹了一位數(shù)乘法的匯編語言實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
匯編語言DOSBox及debug.exe在Windows64下環(huán)境搭建
這篇文章主要為大家介紹了匯編語言環(huán)境的搭建DOSBox及debug.exe在Windows64下安裝配置過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11
匯編語言基礎(chǔ)理解計算機(jī)底層技術(shù)原理
這篇文章主要為大家介紹了匯編語言基礎(chǔ),理解計算機(jī)底層原理,想要成為高級程序員,我們必須要學(xué)會匯編語言,匯編語言是非常重要的計算機(jī)底層技術(shù),一般用于底層的編寫2021-11-11

