ARM數(shù)據(jù)處理指令中的立即數(shù)問題
CPU的手冊上,數(shù)據(jù)處理指令格式如上:
立即數(shù)是Operand2部分,占據(jù)了機(jī)器碼的低12位。其中最低8位稱為immed_8,高4位稱為rotate_imm。
立即數(shù)的數(shù)值計(jì)算方法:=immed_8 循環(huán)右移 (2 * rotate_imm)。
就是說,一個(gè)立即數(shù)0x56000000,循環(huán)左移,如果可以得到一個(gè)用8位位圖表示的數(shù),則該立即數(shù)0x56000000是一個(gè)合法的立即數(shù);否則,該立即數(shù)不合法。
高四位:2^4=16,要想表示移位范圍為0-31,則每次最少移動(dòng)2位,即,右移的最小單位為2.這樣,2*16就可以表示最多32位的移動(dòng)。