1. 起因:因为某种原因,需要把原来的代码做成库给第客户调用,但是原来的代码用到好多定义为死循环的DEBUG_BREAK, 如果可以直接调试代码当然没有问题,但是现在要作为库给别人使用,这种代码就很不合理了,我的想法是能不能让DEBUG_BREAK获取当前PC值,并传递给某个接口函数,然后根据Map文件可以大致定位问题出在哪里。
2.问题:要获取PC,多半是要使用内嵌汇编,但是TI编译器的内嵌汇编的格式是怎么样的?比如怎么把PC的值移到某个C变量里面去?我试了一下gcc格式,但是编译不过:
#define DEBUG_BREAK() do { UINT32 PC; \ __asm( " mov %0, pc" \ :"=r"(PC)); \ *DebugBreakHook(PC); \ }while (0) \
或者哪位大虾有更好的方法,还望不吝赐教
xyz549040622:
你的问题好高级,第一个不懂,第二个你可以参考下延时函数,看看他是怎么写的了
xyz549040622:
第二个问题,你可以参考下这个延时的嵌入汇编的编写
SysCtlDelay(uint32_t ui32Count) {__asm("subsr0, #1\n""bne.nSysCtlDelay\n""bxlr"); }
xiangyun zeng:
回复 xyz549040622:
这个是传入参数,而不是返回参数。
Thanks Anyway