首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

这段汇编语言是干嘛用的解决方案

2013-01-25 
这段汇编语言是干嘛用的error_t pthread_create__r (void* (*in_fun_ptr)(void *),void* in_arg,intin_sta

这段汇编语言是干嘛用的
error_t pthread_create__r (void* (*in_fun_ptr)(void *),
                           void* in_arg,
                           int   in_stack_size)
{
    55c8:       94 21 ff b0     stwu    r1,-80(r1)
    55cc:       7c 08 02 a6     mflr    r0
    55d0:       93 a1 00 44     stw     r29,68(r1)
    55d4:       93 c1 00 48     stw     r30,72(r1)
    55d8:       93 e1 00 4c     stw     r31,76(r1)
    55dc:       90 01 00 54     stw     r0,84(r1)
    55e0:       7c 7e 1b 78     mr      r30,r3
    55e4:       7c 9d 23 78     mr      r29,r4
    55e8:       7c bf 2b 78     mr      r31,r5


总是在进入函数的前面。
[解决办法]
是准备压栈的。
第一句,保存旧的堆栈指针,并将栈指针减80,得到新的栈指针;
第二句,将函数返回地址保存到r0;
之后,将r29,r30,r31与返回地址的值保存到堆栈中。
最后,r3,r4,r5的值是这个函数传进来的第一、第二和第三个参数,移到r29,r30,r31中具体进行使用。

热点排行