I am a bit confused about lh (load halfword) instruction. Would it be correct to say that it gets the contents of the address just like in load word instruction but then takes the 16 rightmost bits and sign extends them?
So considering the picture above for load word, the datapath would be the same up to Read Data in Data Memory, but then the 16 rightmost bits would be sign extended and passed as write data to the register file instead of the whole 32 bits at read data.
Could someone confirm I am understanding the instruction correctly? It is sort of difficult to say what is going on.