Search code examples
arminstruction-set

What type of ARMv8 instructions are LSL, LSR, ASR & ROR?


I'm learning the basics of Armv8 and am answering a homework problem asking to categorize each of the instructions into a specific type.

Data processing instructions include:

AND, EOR, SUB, RSB, ADD, ADC, SBC, RSC, TST, TEQ, CMP, CMN, ORR, MOV, BIC & MVN.

Branch processes:

B, BL

Transfer processes:

STR, STRB, LDR & LDRB

However, I wasn't able to find any definitive answer in the ARMv8 reference manual regarding which category the LSL, LSR, ASR & ROR instructions fall into.

I'm assuming it's not the multiply category, but I guess that would make sense if it were since shifting is the same as multiplying by a power of two?


Solution

  • The documentation lists them as Data Processing operations, not in the list at the top but when you dig into the descriptions of the Data Processing operation groups it has them listed there. For aarch32 I think they were simply mov instructions with a shifter operand, for aarch64 I am not sure if they are their own thing or just a pseudo instruction for mov.