【问题标题】:Exception Handling in Arm AssemblyArm 装配中的异常处理
【发布时间】:2014-01-21 14:14:15
【问题描述】:

我正在查看导致未定义指令异常并为异常提供处理程序的示例代码。最后一行代码语法不熟悉,一直没找到意思:

LDMFD sp!, {r0-r12, pc}^

^符号代表什么?

【问题讨论】:

    标签: assembly stack arm


    【解决方案1】:

    来自ARM armasm LDM documentation

    ^

    是可选后缀,仅在 ARM 状态下可用。您不得使用 它在用户模式或系统模式下。它有以下用途:

    • 如果 reglist 包含 PC (R15),除了正常的多寄存器传输外,SPSR 被复制到 CPSR 中。这是为了从异常处理程序返回。仅在异常模式下使用它。
    • 否则,数据会传入或传出用户模式寄存器,而不是当前模式寄存器。

    【讨论】:

      【解决方案2】:

      这会将当前模式的 SPSR 复制到 CPSR 中,给出原子返回和恢复状态指令。 Furber 文本 pg 中有很好的描述。 131.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 2020-06-26
        • 1970-01-01
        相关资源
        最近更新 更多