您现在的位置: 主页 > 嵌入式处理器 > FPGA > 汇编程序、c/c++程序间的相互调用 -
本文所属标签:
为本文创立个标签吧:

汇编程序、c/c++程序间的相互调用 -

来源: 网络用户发布,如有版权联系网管删除 2018-08-07 

[导读]3.汇编程序、c/c++程序间的相互调用
汇编程序、C程序及c++程序在相互调用时,特别应注意遵守相应的ATPCS规则。下面举一些例子具体说明在这些混合调用中应注意遵守的ATPCS规则。
(1)C程序调用汇编程序
汇编程序的设

3.汇编程序、c/c++程序间的相互调用

汇编程序、C程序及c++程序在相互调用时,特别应注意遵守相应的ATPCS规则。下面举一些例子具体说明在这些混合调用中应注意遵守的ATPCS规则。

(1)C程序调用汇编程序

汇编程序的设计要遵守ATPCS规则,保证程序调用时参数的正确传递。在汇编程序中使用EXPORT伪指令声明本程序,使得本程序可以被别的程序调用;在C语言中使用extern关键词声明该汇编程序。下面是一个C程序调用汇编程序的例子。其中,汇编程序strcopy实现字符串复制功能,C程序调用strcopy完成字符串的复制工作。

(2)汇编程序调用C程序

汇编程序的设计要遵守ATPCS规则,保证程序调用时参数的正确传递。在汇编程序中使用IMPORT伪指令声明将要调用的C程序。下面是一个汇编程序调用C程序的例子。其中,在汇编程序中设置好参数的值,本例子中有5个参数,分别使用寄存器R0存放第1个参数,RI存放第2个参数,R2存放第3个参数,R3存放第4个参数,第5个参数利用数据栈传送。由于利用数据栈传递参数,因此在程序调用结束后要调整数据栈指针。

(3)c++程序调用C程序

c++程序调用C程序时,在C程序中使用关键词extern"C"声明被调用的C程序。对于c++中的类或者结构,如果它没有基类和虚函数,则相应对象的存储结构和ARM C相同。下面的例子说明了这一点。

(4)汇编程序调用c++程序

在汇编程序中使用伪指令IMPORT声明被调用的C++程序。在汇编程序中将参数存放在数据栈中,而存放参数的数据栈的单元地址放在R0寄存器中,这样被调用的C++程序就能访问相应的参数。下面的例子说明了这一点。



来源:ks990次

本文引用地址: http://www.21ic.com/app/eda/201806/769240.htm



              查看评论 回复



嵌入式交流网主页 > 嵌入式处理器 > FPGA > 汇编程序、c/c++程序间的相互调用 -
 

"汇编程序、c/c++程序间的相互调用 -"的相关文章

网站地图

围观()