Memory MIPS32-仅使用加载字和存储字指令加载半个字

Memory MIPS32-仅使用加载字和存储字指令加载半个字,memory,assembly,mips,memory-address,instructions,Memory,Assembly,Mips,Memory Address,Instructions,出于教育目的,我需要弄清楚如何仅使用MIPS中的lw和sw指令将半个字从内存地址加载到寄存器 我知道您可以使用lh、sh、lb和sb,但我想知道如何仅使用lw和sw。 例如,将两个字节“AB”加载到寄存器$t0中: Mem: [ A ] [ B ] [ C ] [ D ] 100 200 300 400 $t0: [ 0 ] [ 0 ] [ A ] [ B ] 到目前为止,我的解决方案是: lw $t0, 100($zero) srl $t0, t0, 16 是否

出于教育目的,我需要弄清楚如何仅使用MIPS中的lw和sw指令将半个字从内存地址加载到寄存器

我知道您可以使用lh、sh、lb和sb,但我想知道如何仅使用lw和sw。

例如,将两个字节“AB”加载到寄存器$t0中:

Mem: [ A ] [ B ] [ C ] [ D ]
      100   200   300   400

$t0: [ 0 ] [ 0 ] [ A ] [ B ]
到目前为止,我的解决方案是:

lw  $t0, 100($zero)
srl $t0, t0, 16

是否有办法只使用sw和lw指令而不使用其他操作来执行相同的操作

我有一个想法,在半个单词的边界上加载和存储单词。。。但至少
spim
会因为尝试这样做而抛出异常。因此,我的直接想法是否定的,这不能仅用MIPS ISA中定义的
lw
sw
lw
sw
来实现,当地址未对齐时会导致地址错误异常。我同意OP提出的建议不能只用
lw
sw
那么
swl
swr
呢?你可以用这个做一些小把戏。。。