Q: Encoding LSL Logical Shift Left - ARM I'm trying to encode the ARM instruction LSL (Logical Shift Left) and I'm having trouble understanding the manual.
It lists two immediate values (immr and imms) and it doesn't specify what imms is except that it's not 11111. It looks like imms is (31-immr) but what purpose would that serve?  My best guess is it combines immr and imms to get a value larger than 5 bits.  It clearly states shift is from 0 to 31 so can it really be larger split between the immr and imms?


I'm hoping this is accurate.
