获取ARM程序集中的PC值

Pau*_*ulH 3 assembly arm windows-mobile

我有一个Windows Mobile 6 ARMV4I项目,我希望获得程序计数器的值.

该函数声明如下:

extern "C" unsigned __int32 GetPC();
Run Code Online (Sandbox Code Playgroud)

我的汇编代码如下所示:

GetPC FUNCTION
    EXPORT GetPC
    ldr r0, [r15]   ; load the PC value in to r0
    mov pc, lr      ; return the value of r0
ENDFUNC
Run Code Online (Sandbox Code Playgroud)

但是,当我调用该GetPC()函数时,我每次都得到相同的数字.所以,我假设我的集会没有做我认为它正在做的事情.任何人都可以指出我可能做错了什么吗?

谢谢,PaulH

And*_*rey 7

PC每次都是一样的,因为 ldr r0, [r15]有固定地址(PC总是在那里相同).使用R14,因为它包含返回地址,这可能是您需要的.或使用内联函数.