I can clarify the confusion between option $(C)$ and $(D)$.
If you are thinking Register Indirect Scaled Addressing, is just a made up thing, it's not . ARM has a register indirect indexed mode, with scaling.
In Indexed (base) addressing mode: an offset is added to the base/index register.
But "with scaling": a scaling operation is performed before the offset is added to the index/base register.
LDR R0, [R1, R2, LSL #2] ; R0 = *(R1 + (R2 << 2))
LDR R0, [R1, -R2, ASR #1] ; R0 = *(R1 - (R2 >> 1)) signed shift
This scaling operation is performed by what ARM calls the "barrel shifter".
It can perform arithemetic shift right (ASR), logical shift left (LSL), logical shift right (LSR), right rotate (ROR) and rotate right extened (RRX).
Now we can just generalize this.
If for any hypothetical processor, the effective address of the operand is calculated by scaling the offset value by some factor, and then adding this offset to some index/base register.
Then we are using the so called Register Indirect Scaled Addressing mode.
Considering this, option $ (D)$ is correct.
For extra context, if we are talking about ARM, then -
$LW \ R1, 20(R2)$, would be register indirect indexing with offset.
LDR R0, [R1, #imm] ; R0 = *(R1 + imm)
LDR R0, [R1, #-imm] ; R0 = *(R1 - imm)