【问题标题】:ARM assembly: Basic usage of the MOV instructionARM汇编:MOV指令的基本用法
【发布时间】:2017-02-25 05:18:51
【问题描述】:

如何将数字 0xEFFFFFF2 加载到 ARM 中的寄存器。
这将是什么腐烂?

MVN r0, #2D1 

这条指令有效吗?

【问题讨论】:

  • 您尝试过什么,遇到过什么问题?参见例如 this 页面。
  • 我突出显示了关键字并(希望)提高了问题的清晰度。

标签: assembly arm instruction-set


【解决方案1】:

mvn 只是将 0x2D1 反转为 0xFFFFFD2E 对吗?你需要你想要的数字的倒数,即 0x1000000D 对吗? Gnu 汇编器正在编码 0x2D1 2 表示向右旋转 4 并且 0xD1 是要旋转的值。您无需担心,除非您自己制作机器代码,否则您无需将 0x2D1 放入汇编语言中输入您想要的数字,要么这样做

mov r0,#0xEFFFFFF2

mvn r0,#0x1000000D

ldr r0,=0xEFFFFFF2

像 gnu assembler 这样的汇编程序将尝试找到一条指令来解决 mov 在这种情况下它选择 mvn r0,#0x1000000D,其他一些汇编程序可能不会尝试并简单地告诉您您的常量不利于 mov 指令强制你自己做mvn。或者你可以自己做 mvn。对于 gnu 汇编器的第三个选择,它将尝试 mov、mvn,如果两者都不适用于该常量,那么它将将该值放在附近并执行 pc 相对加载(消耗两个单词的 .text 空间)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2012-04-08
    • 1970-01-01
    • 2015-02-25
    相关资源
    最近更新 更多