windows-mobile - 获取 ARM 汇编中的 PC 值

标签 windows-mobile assembly arm

我有一个 Windows Mobile 6 ARMV4I 项目,我想在其中获取程序计数器的值。

函数声明如下:

extern "C" unsigned __int32 GetPC();

我的汇编代码如下所示:
GetPC FUNCTION
    EXPORT GetPC
    ldr r0, [r15]   ; load the PC value in to r0
    mov pc, lr      ; return the value of r0
ENDFUNC

但是,当我调用 GetPC()函数,我每次都得到相同的数字。所以,我假设我的程序集没有做我认为它在做的事情。谁能指出我可能做错了什么?

谢谢,
保罗

最佳答案

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

关于windows-mobile - 获取 ARM 汇编中的 PC 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723780/

相关文章:

c - 在 GCC 或 G++ (Linux) 中使用 __declspec()

arm - ARM Cortex-A8 处理器中的程序执行时间

c# - 将文件从 PC 复制到 Windows Mobile 设备的好方法是什么?

c# - 在 Windows Phone 8 应用程序中更改全景标题

c# - Windows Mobile App 的 WCF 服务正在运行但我无法连接

plugins - 如何在 Windows Phone 8 XAP 中包含另一个程序集

c# - 使用 C# 在 Windows Mobile 5.0 中保存图像

assembly - 调色板不适用于 VGA 中的某些颜色

assembly - 在x86中 "test eax,eax"和 "cmp eax,0"有什么区别

c - 如何为 gcc 内联汇编获取 64 位整数的低位和高位 32 位? (ARMV5平台)