zoukankan      html  css  js  c++  java
  • 汇编调用C程序

    本程序用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
  • 相关阅读:
    input.file上传图片| FileReader h5新特性
    lua的luasocket程序
    nginx的proxy_set_header
    lua的table.sort
    lua的深拷贝和浅拷贝
    nginx的location匹配
    kong后台接口
    一些程序和工具
    lua的模式匹配
    php的一些语法
  • 原文地址:https://www.cnblogs.com/wzben/p/5440296.html
Copyright © 2011-2022 走看看