c語言函數匯編調用 匯編語言 函數調用

如何在C語言中調用匯編函數

1、 參數傳遞

成都創新互聯專注于錦江企業網站建設,成都響應式網站建設公司,成都商城網站開發。錦江網站建設公司,為錦江等地區提供建站服務。全流程定制開發,專業設計,全程項目跟蹤,成都創新互聯專業和態度為您提供的服務

二、匯編程序、C程序相互調用舉例

1、 C程序調用匯編程序

匯編程序的設計要遵守ATPCS(ARM—Thumb Procedure Call Standard),保證程序調用時參數的正確傳遞。在匯編程序中使用EXPORT 偽操作聲明本程序,使得本程序可以被別的程序調用。在C程序使用extern聲明該匯編程序。

下面是一個C程序調用匯編程序的例子。其中匯編程序strcopy實現字符串復制功能,C程序調用strcopy完成字符串復制的工作。

在c語言里怎么調用匯編函數?

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

我的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

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

如何在匯編調用c語言函數?

一、 參數傳遞的基本規則(ATPCS(ARM—Thumb Procedure Call Standard))

1、 參數傳遞

二、匯編程序、C程序相互調用舉例

1、 C程序調用匯編程序

匯編程序的設計要遵守ATPCS(ARM—Thumb Procedure Call Standard),保證程序調用時參數的正確傳遞。在匯編程序中使用EXPORT 偽操作聲明本程序,使得本程序可以被別的程序調用。在C程序使用extern聲明該匯編程序。

下面是一個C程序調用匯編程序的例子。其中匯編程序strcopy實現字符串復制功能,C程序調用strcopy完成字符串復制的工作。

//C程序

#include stdio.h

extern void strcopy(char *d, const char *s);

int main( )

{

const char *srcstr=”First string-source”;

char dststr[ ]=”Second string-destination”;

printf(“Before copying:\n”);

printf(“%s\n %s\n”, srcstr,dststr);

strcopy(dststr,srcstr);

printf(“After copying:\n”);

printf(“%s\n %s\n “,srcstr,dststr);

while(1) ;

}

;匯編程序

AREA Scopy, CODE, READONLY

EXPORT strcopy

Strcopy

LDRB R2, [R1], #1

STRB R2, [R0], #1

CMPR2,#0

BNE Strcopy

MOV PC, LR

END

2、 匯編程序調用C程序

匯編程序的設計要遵守ATPCS,保證程序調用時參數的正確傳遞。在匯編程序中使用IMPORT偽操作聲明將要調用的C程序。下面是一個匯編程序調用C程序的例子。其中在匯編程序中設置好各參數的值。本例中有6個參數,分別使用寄存器R0存放第1個參數,

R1存放第2個參數, R2存放第3個參數, R3存放第4個參數, 第5個、第6個參數利用數據棧傳送。由于利用數據棧傳遞參數,在程序調用結束后要調整數據棧指針。

//C程序g( )返回6個參數的和

int g( int a, int b, int c, int d, int e, int f )

{

printf(“e=%d\n”, e);

printf(“f=%d\n”, f);

return (a+b+c+d+e+f);

}

; 匯編程序調用C程序 g( ) 計算6個整數 i, 2*i, 3*i, 4*i, 5*i, 6*i的和

EXPORT f

AREA f ,CODE, READONLY

IMPORT g

MOV R0, #1

ADD R1, R0, R0

ADD R2, R1, R0

ADD R3, R2, R0

ADD R4, R3, R0

ADD R5, R4, R0

STR R4, [SP, #-4]!

STR R5, [SP, #-4]!

BL g

ADD SP, SP, #4

ADD SP, SP, #4

STOP B STOP

END

文章標題:c語言函數匯編調用 匯編語言 函數調用
標題網址:http://m.kartarina.com/article48/hgechp.html

成都網站建設公司_創新互聯,為您提供動態網站、面包屑導航、ChatGPT、搜索引擎優化微信小程序、標簽優化

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化
主站蜘蛛池模板: 亚洲Aⅴ无码一区二区二三区软件| 人妻无码久久精品| 国产成人无码一二三区视频| H无码精品3D动漫在线观看| 亚洲日韩中文无码久久| 精品人妻大屁股白浆无码| 无码av中文一区二区三区桃花岛| 精选观看中文字幕高清无码| 亚洲av无码一区二区三区观看| 国产精品无码免费播放 | 无码人妻一区二区三区免费| 精品久久久久久无码中文字幕漫画| 亚洲精品无码专区久久久| 在线无码视频观看草草视频| 久久青草亚洲AV无码麻豆| 国产精品无码av片在线观看播| 国产乱子伦精品无码码专区| 天堂无码在线观看| 无码一区二区三区AV免费| 久热中文字幕无码视频| 无码人妻精品一区二区蜜桃百度 | 自慰无码一区二区三区| 久久亚洲AV无码精品色午夜麻豆| 人妻丝袜无码专区视频网站| 亚洲av永久无码| 99久久亚洲精品无码毛片| 亚洲精品中文字幕无码蜜桃| 亚洲Av无码乱码在线观看性色 | 亚洲AV无码久久久久网站蜜桃| 无码av中文一二三区| 亚洲大尺度无码无码专线一区| 久久久久亚洲av无码专区蜜芽| 久久无码精品一区二区三区| 日韩精品人妻系列无码av东京| 亚洲中文无码亚洲人成影院| 午夜无码伦费影视在线观看| 亚洲VA中文字幕无码一二三区 | 日韩a级无码免费视频| 亚洲国产精品成人AV无码久久综合影院| 一本色道无码道DVD在线观看| 久久久久无码精品国产|