一直使用keil,最近研究了下--use_frame_pointer选项,KEIL会将当前函数的堆栈起始地址(frame pointer)记录到R11,
当进入函数时一般会push {r11,lr},保存调用者的跳转地址和frame pointer,这样形成了一个call stack链表,当程序出现异常时,
就能分析出调用关系。
问题是,我发现当某个函数里没有调用其他函数时,编译器只push {r11},就没法在堆栈中形成call stack链表,
怎么强制让keil在函数调用时push lr?
|