app外包网站,seo网站优化做什么,聊城网站建设公司电话,纹身网站建设案例在C语言中调用汇编文件中的函数#xff0c;要做的主要工作有两个#xff1a;
一是在C语言中声明函数原型#xff0c;并加extern关键字#xff1b;
二是在汇编中用EXPORT导出函数名#xff0c;并用该函数名作为汇编代码段的标识#xff0c;最后用mov pc, lr返回。然后要做的主要工作有两个
一是在C语言中声明函数原型并加extern关键字
二是在汇编中用EXPORT导出函数名并用该函数名作为汇编代码段的标识最后用mov pc, lr返回。然后就可以在C语言中使用该函数了。
从C语言的角度并不知道该函数的实现是用C语言还是汇编语言。更深的原因是因为C语言的函数名起到表明函数代码起始地址的位置这个和汇编的label是一致的。 实例代码
#include stdio.hextern void asm_strcpy(const char *src, char *dest);int main()
{const char *s welcome to ETC;char d[32];asm_strcpy(s, d);return 0;
}
建立strcpy.s代码并加入工程中。
;asm function implementationAREA asmfile, CODE, READONLYEXPORT asm_strcpyasm_strcpy
loopldrb r4, [r0], #1 ;address increment after
readcmp r4, #0beq overstrb r4, [r1], #1b loop
overmov pc, lr
END在这里C语言和汇编语言之间的参数传递是通过ATPCSARM Thumb Procedure Call Standard的规定来进行的。简单地说就是如果函数有不多于4个参数对应的用R0R3来进行传递多于4个时借助栈函数的返回值通过R0来返回