Match each addressing mode in List I with a data element or an element of a data
structure (in a high-level language) in List II:
List I
List II
P. Immediate
1. Element of an array
Q. Indirect
2. Pointer
R. Base with index
3. Element of a record
S. Base with offset/displacement 4. Constant
A quick way to solve matching questions like this is to eliminate options using just one or two confident pairings, rather than working out all four from scratch.
Step 1: Start with the easiest pairing - Immediate. An immediate operand is a literal value baked into the instruction with zero memory dereferencing, which can only mean a fixed constant (item 4) - never an array element, pointer, or record field, all of which require at least one memory access. So P must map to 4. This immediately rules out any option where P maps to 1 or 2.
Step 2: Compare the remaining candidate options. Among the given choices, two options have P-4: "P-4, Q-3, R-1, S-2" and "P-4, Q-2, R-1, S-3". Both agree that R (base with index) maps to 1 (array element), which is correct since indexing is the textbook mechanism for iterating over arrays.
Step 3: Distinguish using Q (Indirect). Indirect addressing means "the operand's address is itself stored in memory/register," which is precisely the definition of a pointer (item 2), not a record element. This rules out "Q-3" and confirms Q-2.
Step 4: Confirm S (Base + offset/displacement). With Q fixed at 2, the only data element left for S is item 3 - element of a record - which is indeed correct, since a fixed displacement from a base address is exactly how struct/record fields are compiled.
Step 5: Final matching. P-4, Q-2, R-1, S-3, which is option (B).
Final Answer: option (B).