TI中文支持网
TI专业的中文技术问题搜集分享网站

如何获取当前PC并作为参数传递给某个函数

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

赞(0)
未经允许不得转载:TI中文支持网 » 如何获取当前PC并作为参数传递给某个函数
分享到: 更多 (0)