码迷,mamicode.com
首页 > 其他好文 > 详细

汇编调用C程序

时间:2016-04-27 22:07:32      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

本程序用keil5实现。

keil4会将C程序的地址设为0x00000000,即一开始就运行C程序了,参数都还没设置好。这个错误我也没深究,因为我自己装的是keil5.

 

首先需要在汇编代码中给C程序指定参数。如果函数需要4个及4个以下的参数的话,那么把我们需要的参数分别赋值在R0~R3这4个寄存器中即可。

如果多于4个参数,那么既要在堆栈中放入参数了。

设定好sp即堆栈指针的地址,c函数会在该堆栈中取第4个以后的参数。

 

调用C函数时,C文件不需要声明什么,就是普通的C即可。而汇编要在前面IMPORT 函数名

 

C语言代码:

int SUM(int result,int a,int b,int c,int d,int e,int f){
    
    
    return result = a+b+c+d+e+f;
    
    
}

 

汇编代码:

        AREA    EXAMPLE,CODE,READONLY
        IMPORT     SUM
        PRESERVE8
        ENTRY
        
ARM        
        MOV R0,#0;result
        MOV R1,#1;a
        MOV R2,#2;b
        MOV R3,#3;c
        
        LDR SP,=0X40001000
        MOV R4,#4;d
        MOV R5,#5;e
        MOV R6,#6;f
        
        STMFD SP!,{R4,R5,R6};
        
        BL SUM;调用C
        
        END

 

汇编调用C程序

标签:

原文地址:http://www.cnblogs.com/wzben/p/5440296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!