这段汇编语言是干嘛用的
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中具体进行使用。