1、操作復(fù)雜程度的不同

成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,公司以做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、系統(tǒng)開(kāi)發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶上千,涉及國(guó)內(nèi)多個(gè)省份客戶。擁有多年網(wǎng)站建設(shè)開(kāi)發(fā)經(jīng)驗(yàn)。為企業(yè)提供專(zhuān)業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過(guò)專(zhuān)業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。
c語(yǔ)言,與匯編語(yǔ)言相比,c語(yǔ)言在更加接近人的一般思維,因此在程序的設(shè)計(jì)過(guò)程中比較容易操作,此外在進(jìn)行一些復(fù)雜的操作,運(yùn)算時(shí),c語(yǔ)言比匯編就要簡(jiǎn)單很多,尤其是c語(yǔ)言中的豐富的函數(shù)庫(kù),可以直接實(shí)現(xiàn)一些原本很復(fù)雜的功能,并且從代碼量來(lái)說(shuō)任意一個(gè)c語(yǔ)言程序,通過(guò)反匯編之后變成匯編語(yǔ)言程序,其長(zhǎng)度都可能要增加好幾倍。
2、使用范圍的不同
c語(yǔ)言程序的事件將會(huì)只是編寫(xiě)匯編語(yǔ)言程序的幾分之一,從編寫(xiě)程序的效率上來(lái)說(shuō)c語(yǔ)言無(wú)疑更高,此外C語(yǔ)言是高級(jí)程序語(yǔ)言因此可移植性較好,不太受到到硬件設(shè)備的限制。
在實(shí)現(xiàn)一個(gè)功能時(shí),匯編語(yǔ)言可以直接奔著目標(biāo)去,而C語(yǔ)言則是給你提供了一種對(duì)于對(duì)于這種問(wèn)題的普遍處理辦法,不具有針對(duì)性,因此會(huì)有許多多余的在這個(gè)問(wèn)題中不需要的過(guò)程,因此可能回事程序較大,運(yùn)行較慢。相對(duì)與匯編語(yǔ)言,C語(yǔ)言更加適合一些較大型項(xiàng)目的開(kāi)發(fā)。
3、運(yùn)行的速度和效率不同
程序沒(méi)有了匯編語(yǔ)言計(jì)算機(jī)直接就無(wú)法運(yùn)行,因?yàn)閰R編語(yǔ)言是基于計(jì)算機(jī)底層硬件的編程,通過(guò)它實(shí)現(xiàn)了對(duì)cpu,內(nèi)存,硬盤(pán)以及外界設(shè)備的直接操作,因?yàn)橹苯铀詤R編語(yǔ)言在程序的大小,執(zhí)行的速度與效率方面幾乎無(wú)可比擬,但是也是因?yàn)橹苯樱詤R編程序難以移植,且完成相同的操作代碼量太大,在進(jìn)行一些大的項(xiàng)目是,單獨(dú)使用匯編進(jìn)行編程幾乎不可能實(shí)現(xiàn)。
參考資料來(lái)源:百度百科—匯編語(yǔ)言
參考資料來(lái)源:百度百科—c語(yǔ)言
如果是VC則在編譯器命令行參數(shù)再加 /FA 則會(huì)生成匯編代碼。如果參數(shù)是 /FAs 則會(huì)同時(shí)將源碼和匯編代碼。
/FA 程序集代碼;.asm
/FAc 機(jī)器碼和程序集代碼;.cod
/FAs 源代碼和程序集代碼;.asm
/FAcs 機(jī)器碼、源代碼和程序集碼;.cod
/Fa的用法
/Fa 為編譯中的每個(gè)源代碼文件創(chuàng)建一個(gè)源文件.asm。
/Fa文件名 將文件名.asm 放到當(dāng)前目錄中。僅在編譯單個(gè)源代碼文件時(shí)有效。
/Fa文件名.擴(kuò)展名 將文件名.擴(kuò)展名放到當(dāng)前目錄中。僅在編譯單個(gè)源代碼文件時(shí)有效。
/Fa目錄\ 為編譯中的每個(gè)源代碼文件創(chuàng)建一個(gè)源文件.asm,并將其放到指定目錄中。請(qǐng)注意必須有后綴反斜杠。只允許使用當(dāng)前磁盤(pán)上的路徑。
/Fa目錄\文件名 將文件名.asm 放到指定目錄中。僅在編譯單個(gè)源代碼文件時(shí)有效。
/Fa目錄\文件名.擴(kuò)展名 將文件名.擴(kuò)展名放到指定目錄中。僅在編譯單個(gè)源代碼文件時(shí)有效。
如果你是用gcc 或 g++編譯器,如dev c++則加入命令行參數(shù) -S 即可
Printf
scanf
應(yīng)該不能直接調(diào)用的。可以寫(xiě)出替代函數(shù),
就以輸出為例。將光標(biāo)定位在下一個(gè)位置,向顯存輸入字符。用足夠大的連續(xù)的空間存放字符串。
這樣做成可以隨時(shí)調(diào)用的子函數(shù)就好了。
還可以鍛煉自己。
或者是反匯編一下VC的PRINTF
函數(shù)。
1:
匯編語(yǔ)言是面向具體CPU及其硬件結(jié)構(gòu)的語(yǔ)言
C語(yǔ)言可以做到硬件無(wú)關(guān)性
2:
匯編語(yǔ)言效率較高
C語(yǔ)言效率相對(duì)較低
3:
匯編語(yǔ)言是非結(jié)構(gòu)語(yǔ)言,可讀性較弱
C語(yǔ)言是結(jié)構(gòu)語(yǔ)言,可讀性較強(qiáng)
4:
匯編語(yǔ)言基本沒(méi)有可移植性
C言可移植性很強(qiáng)
5:
匯編語(yǔ)言沒(méi)有函數(shù)庫(kù),所有代碼需要自己組織
C語(yǔ)言有豐富的函數(shù)庫(kù)可供調(diào)用。
有兩種方法:
(1)增加參數(shù)/FA:Project-Setting...,C/C++選項(xiàng)卡中的Project Options中增加參數(shù)/FA,編譯后debug目錄中將會(huì)增加對(duì)應(yīng)源文件的匯編文件(*.asm)。
(2)如果想查看C語(yǔ)句對(duì)應(yīng)的匯編代碼的話,可以這樣:F11單步調(diào)試,在debug工具欄中選擇“disassembly”即可。每行C代碼下面就是對(duì)應(yīng)的匯編代碼。
例如:
C代碼程序:
int main(){
int a = 3;
int b = 4;
int c = a + b;
printf("c=%d/n", c);
return 0;
}
對(duì)應(yīng)的匯編代碼程序(部分)如下:
5:??????? int a = 3;
00401028?? mov???????? dword ptr [ebp-4],3
6:??????? int b = 4;
0040102F?? mov???????? dword ptr [ebp-8],4
7:??????? int c = a + b;
00401036?? mov???????? eax,dword ptr [ebp-4]
00401039?? add???????? eax,dword ptr [ebp-8]
0040103C?? mov???????? dword ptr [ebp-0Ch],eax
1、 參數(shù)傳遞
二、匯編程序、C程序相互調(diào)用舉例
1、 C程序調(diào)用匯編程序
匯編程序的設(shè)計(jì)要遵守ATPCS(ARM—Thumb Procedure Call Standard),保證程序調(diào)用時(shí)參數(shù)的正確傳遞。在匯編程序中使用EXPORT 偽操作聲明本程序,使得本程序可以被別的程序調(diào)用。在C程序使用extern聲明該匯編程序。
下面是一個(gè)C程序調(diào)用匯編程序的例子。其中匯編程序strcopy實(shí)現(xiàn)字符串復(fù)制功能,C程序調(diào)用strcopy完成字符串復(fù)制的工作。
文章標(biāo)題:c語(yǔ)言對(duì)應(yīng)匯編語(yǔ)言函數(shù)庫(kù),c語(yǔ)言對(duì)應(yīng)的匯編碼
標(biāo)題路徑:http://chinadenli.net/article43/dsejhhs.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、靜態(tài)網(wǎng)站、虛擬主機(jī)、商城網(wǎng)站、服務(wù)器托管、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)