前段时候上课,代课的师姐提了一句话并举例,如题。当时极度瞌睡,只注意到了合法与否。今天上网一查,果有此言。如获至宝。赶紧收入囊中。
每个立即数由一个8位的常数循环右移偶数位得到。其中循环右移的位数由一个4位二进制的两倍表示。则有:
=immed_8循环右移(2*rotate_imm)
并不是每一个32位得常数都是合法的立即数,只有能通过上面构造方法得到的才是合法的立即数。
ARM汇编编译器按照下面的规则来生成立即数的编码。
(1)当立即数数值在0和0xFF范围时,令immed_8=,rotate_imm=0.
(2)其他情况,汇编编译器选择使rotate_imm数值最小的编码方式。
阅读(1984) | 评论(1) | 转发(0) |