真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言匯編函數(shù)怎么使用 c語言 匯編語言

如何在C語言中調(diào)用匯編函數(shù)

1、 參數(shù)傳遞

成都創(chuàng)新互聯(lián)專注于麗江網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供麗江營銷型網(wǎng)站建設(shè),麗江網(wǎng)站制作、麗江網(wǎng)頁設(shè)計(jì)、麗江網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造麗江網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供麗江網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

二、匯編程序、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ù)制的工作。

在c語言里怎么調(diào)用匯編函數(shù)?

把匯編寫在另一個(gè)文件里 在main寫個(gè)原型聲明 再把兩個(gè)文件同時(shí)編譯可不可以。

我的gcc編譯器里是這樣寫的

匯編文件m.s

.file "stdio.h"

#hellowrold.s print "hello,world!"

.section .data

output:

.ascii "%d %d %d\0"

.section .text

.globl _fun

_fun:

pushl %ebp

movl %esp, %ebp

subl $16, %esp

movl 0x8(%ebp), %eax

movl %eax, 0x4(%esp)

movl 0xc(%ebp), %eax

movl %eax, 0x8(%esp)

movl 0x10(%ebp), %eax

movl %eax, 0xc(%esp)

movl $output, %eax

movl %eax, (%esp)

call _printf

movl %ebp, %esp

popl %ebp

ret

.end

主函數(shù)前的原型聲明 extern int fun(int i, int j, int k);

C語言內(nèi)嵌匯編

在調(diào)試聯(lián)盛德W800芯片代碼時(shí),看到了下面的代碼實(shí)現(xiàn),記錄下C語言內(nèi)嵌匯編語言的實(shí)現(xiàn)方式。部分代碼如下:

該函數(shù)實(shí)現(xiàn)功能:將入?yún)ewMask的值寫入到psr寄存器,用于恢復(fù)現(xiàn)場(chǎng)。

代碼下載路徑:

__asm__ (

匯編語句部分

:輸出部分

:輸入部分

:破壞描述部分

);

1)C內(nèi)嵌匯編以關(guān)鍵字 __asm__ 或 asm 開始。如果使用 volatile 關(guān)鍵字,則表示告訴編譯器不優(yōu)化后續(xù)的代碼。

2) 匯編語句部分:可以包含多條匯編語句,每條語句之間用“ ”或“;”,例:

注:匯編語句中的操作數(shù)可以使用占位符引用C語言變量,名稱如下:%0,%1,…。

2) 輸出部分:在匯編語言中被修改的C變量

3) 輸入部分:作為參數(shù)輸入到匯編語言中的C變量

注:輸出和輸入部分是針對(duì)匯編語句部分的輸入和輸出參數(shù)而言。例:如果匯編語言使用變量設(shè)置寄存器,則用輸入部分;如果匯編語言從寄存器讀取值,保存到變量,則用輸出部分。

4) 破壞描述部分:通知編譯器使用了哪些寄存器或內(nèi)存。

5) 每個(gè)部分之間用”:”隔開。匯編語句部分必不可少,其他部分可以省略。例: asm("nop") ,實(shí)現(xiàn)空操作。

c語言中如何調(diào)用匯編程序

1、如果匯編程序是可執(zhí)行文件,比如exe文件,則可以使用system函數(shù)直接調(diào)用。比如下面的代碼,用system()打開windows上的記事本程序。

#include

#include

int main()

{

system("notepad.exe");

return 0;

}2、在C語言源碼中,可以通過內(nèi)聯(lián)匯編來直接編寫匯編程序代碼。不同的編譯器使用內(nèi)聯(lián)匯編的方法不同,vc/vs編譯器中一般使用__asm關(guān)鍵字來使用內(nèi)聯(lián)匯編,gcc編譯器一般使用asm關(guān)鍵字來使用內(nèi)聯(lián)匯編,以vc6.0為例,下面的代碼通過使用內(nèi)聯(lián)匯編來計(jì)算1+1,并將結(jié)果保存到int型變量result中。

#include

int main()

{

int result;

_asm {

mov eax,1

mov ebx,1

add eax,ebx

mov result, eax

}

printf("1+1=%d\n", result);

return 0;

}


網(wǎng)頁名稱:c語言匯編函數(shù)怎么使用 c語言 匯編語言
分享地址:http://weahome.cn/article/dojcjgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部