【问题标题】:arm(Thumb-2) compare 32 bits and convert to hexarm(Thumb-2) 比较 32 位并转换为十六进制
【发布时间】:2018-09-18 02:15:54
【问题描述】:

我在 arm(Thumb-2) 上运行并想检查存储在寄存器 r3+0x14 = AABBCCDD 上的地址上的数据。

我认为代码是:

ldr r3,[r0,#0x14]
ldr r2, #0xAABBCCDD
cmp r3, r2
BNE notCompareLabel

现在我想翻译成修复 Thumb-2 的十六进制。我使用http://armconverter.com/ 将手臂转换为十六进制。

ldr r3,[r0,#0x14] -> 4369

cmp r3, r2 -> 9342

但我不能用这个网站翻译ldr r2, #0xAABBCCDD

  1. 我的手臂密码对吗?
  2. 我正在寻找将 arm(Thumb-2) 转换为十六进制的软件(我不喜欢这个网站)
  3. 为什么我不能翻译ldr r2, #0xAABBCCDD?什么是十六进制?

谢谢大家!

【问题讨论】:

    标签: assembly arm cpu-registers


    【解决方案1】:

    应该是

    ldr r2, =0xAABBCCDD
    

    您为什么不使用适当的汇编程序,例如 GAS(随 GCC 提供)? 这个 ldr 是一个伪指令。它可能被翻译成 mov 或从文字池中加载: http://www.keil.com/support/man/docs/armasm/armasm_dom1359731147760.htm

    如果你想修补一些东西并且需要避免文字池,你可以这样做:

    mov r2, #0xCCDD
    movt r2, #0xAABB
    

    【讨论】:

    • 你知道将 arm 转换为十六进制的软件吗?
    • 正如我所说 - 是的,GNU Assembler GAS、Keil ARM Assembler、IAR ARM Assembler、Microsoft 的 ARM Assembler 等。
    • 女巫可以从十六进制转换为手臂(从手臂到十六进制相反)?
    • 你的意思是从十六进制数据到汇编代码?任何反汇编程序,例如objdump(binutils 的一部分)或其他提到的开发环境附带的。
    • 那些指令(movt 和超过 8 位有效位的 mov)不被 ARM(也不是 thumb-2)普遍支持
    猜你喜欢
    • 1970-01-01
    • 2017-03-08
    • 2011-03-05
    • 2011-04-30
    • 2013-12-26
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多