EDA365电子论坛网

标题: 如何将32-bit立即数通过MOV指令装入寄存器R2中呢 [打印本页]

作者: abc66    时间: 2022-10-11 11:00
标题: 如何将32-bit立即数通过MOV指令装入寄存器R2中呢
ARM指令格式A1和A2都无法将32-bit立即数通过MOV指令装入寄存器R2。我应该用什么指令或什么方法实现呢?
0 t! s! [- j. k/ {" u
作者: three    时间: 2022-10-11 13:11
可以用以下伪指令实现:
. q0 p4 v- g5 }
+ H( w; y+ h2 @: wLDR  r2, =0x12345678
  r0 G' L6 ]! t7 n0 h/ u编译器会自动生成一条PC relative LDR指令,从literal pool里取数。即:
0 u( g# C6 i( K
. R- d& B; ?) J6 o0 A* g: Q# {% r) \LDR  r2, [pc, xxx]   // 偏移量由编译器自动计算3 S) }% \( \: T" ^+ T4 N& ^# ^

: v+ D- J* x! k; }: U.../ v* w) N0 P4 V

4 @' v8 |5 ~) X+ v...
# ?. Z. ^) j& j; K& D6 X; c& e" a" P( G  z' p+ ]4 H( q( G" K. M
...
: \- \! G7 D) L( S/ ?  h
" h9 R! g" d! A! W$ SDCD  0x12345678  // Literal pool6 I. N# H: m1 E. b/ r5 a# y

作者: opipo    时间: 2022-10-11 14:11
由于当前 PC 到函数末尾的长度,人工基本没法算,所以这个工作(在合适的位置放入立即数,以及计算 offset)一般都由汇编器或编译器自动安排。3 i! k; f9 i) W

作者: oponi    时间: 2022-10-11 14:38
通常理解的立即数,应该是把数据装入寄存器的那条CPU指令,使用了“立即寻址”的寻址方式! r/ V+ n4 v5 c: \





欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2