这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 红书中汇编调用C程序,一处不懂

共2条 1/1 1 跳转至

红书中汇编调用C程序,一处不懂

院士
2006-09-17 18:14:16     打赏
红书中汇编调用C程序,一处不懂



关键词: 书中     汇编     调用     程序     一处     不懂    

院士
2006-12-22 22:43:00     打赏
2楼
问        《ARM微控制器基础和实践》中的汇编调用C程序,P116:
EXPORT    CALLSUM5
            
            AREA    EXAMPLE,CODE,READONLY
            
            IMPORT    sum5
            
CALLSUM5    
            STMFD    SP!,{LR}
            ADD         R1,R0,R0                    
            ADD        R2,R2,R0
            ADD        R3,R1,R2
            
            STR        R3,[SP,#-4]!
            ADD        R3,R1,R1
            BL        sum5
            ;ADD        SP,SP,#4
            LDMFD    SP!,{PC}
            
            END
不知    ADD        R1,R0,R0          
            ADD        R2,R2,R0
            ADD        R3,R1,R2
            STR        R3,[SP,#-4]!
            ADD        R3,R1,R1
    这几句是什么意思?
    感觉好像不对呀,r0,r1,r2,r3存储第1,2,3,4参数,
感觉应该将r0,,r1,r2,r3赋值才对呀。请解释
                
1: 何必?你只要用KEIL ARM软件,初始化代码自动生成!!! 2: 我没用过keil ARM,请问哪里能下?或者你能传给我吗?         my qq: 403750184 3: 高手说一下 4: 关注我认为应该是通过以上方式(给r0,r1,r2,r3及堆栈赋值)生成所谓a,b,c,d,e.然后了用SUM函数.SUM()函数可用反编译看看! 5: 请周公写出一个完整的程序作为例子,帮助我们理解书上的:
int  sum5(int a,int b,int c,int d,int e)
{

    return (a+b+c+d+e);
}
请周公写出一个完整的程序作为例子,帮助我们理解 6: re:对,代码
            ADD        R1,R0,R0          
            ADD        R2,R2,R0
            ADD        R3,R1,R2
            STR        R3,[SP,#-4]!
            ADD        R3,R1,R1
的意思就是给R1、R2、R3赋值,R0的值按默认值(此程序不修改R0),并把最后的那个参数保存到堆栈里。当然你也可以这样:
            MOV        R0,#10
            MOV        R1,#8
            MOV        R2,#90
            ...
           
         


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]