初学ARM,在看ARM数据处理指令的操作数的寻址方式的时候有点不明白:
<opcode> {<cond>} {s} <rd>, <rn>,<shifter_operand>
shifter_operand是第二个操作数,当shifter_operand为立即数方式的时候
每个立即数是由一个8位的常数循环右移偶数位得到。其中循环右移的位数由一个4位的二进制的两倍表示。如果立即数记作<immddiate>,8位常数记作immed_8, 4位右移值记作rotate_imm则有:
<immediate>=immed_8循环右移(2*rotate)
有几个地方有点搞不懂,望各位高手解释以下,感激不尽,呵呵
第一:这个8位的常数是什么啊? 是十进制的数,二进制的? 八进制还是十六进制?
第二:为什么要这样表示这个立即数啊? 直接表示不就完了吗?还搞这么复杂?希望有人给我详细解释,谢谢.......... |