【问题标题】:what does {pc}+2 mean in disassembly window?反汇编窗口中的 {pc}+2 是什么意思?
【发布时间】:2018-04-03 04:51:44
【问题描述】:

嗨。

我正在研究使用stm32f103vb板和keil uVision4的微处理器。

该代码只是练习,但我不知道红色框中的 {pc}+2 是什么意思。

ADR 指令加载地址 0x08000338,因此它不等于 [pc, #2]。

大括号是什么意思???请帮帮我~

【问题讨论】:

    标签: disassembly keil


    【解决方案1】:

    一般来说,[pc+offset]表示指令指针,或PC(程序计数器)相对寻址。

    它用于在普遍支持 PIC 的操作系统中的位置无关代码。例如,Linux 支持 PIC,但 Windows 上的规范是放弃 PIC 以支持 PDC。

    在您的情况下,看起来 r2 正在接收比当前指令 (ADR) 提前 2 个单位的地址。

    【讨论】:

    • 嗯...我想知道的不是 [pc, #offset] 而是 {pc}+2。我已经知道 [pc, #offset] 是什么意思。在实践代码中,adr 指令加载 data3 的地址(0x08000338 处的 32 位数据)。我认为如果 {pc}+2 像 [PC, #offset] 一样,{pc}+2 的结果是 0x0800031C(=0x0800031A+0x2)........
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2016-12-14
    相关资源
    最近更新 更多