【发布时间】:2019-08-16 09:21:44
【问题描述】:
我最近在阅读 MIPS 指令集时遇到了两条在其他指令集中没有见过的不寻常指令。
我环顾四周,找到了关于这些指令究竟做了什么的体面解释,但我所能弄清楚的是它们在某种程度上与未对齐的内存访问有关。
MIPS I 要求所有内存访问都与它们的自然字边界对齐,否则会发出异常信号。为了支持高效的非对齐内存访问,有以“left”或“right”为后缀的加载/存储字指令。
但没有进一步详细说明这实际上意味着什么。
我能找到的最接近正确解释的是Dr John Lumis's website:
通过使用一对特殊指令,可以仅在两条指令中加载或存储未对齐的字和双字。对于加载,LWL 指令与 LWR 指令配对。加载指令从对齐的字中读取左侧或右侧字节(寄存器的左侧或右侧),并将它们合并到目标寄存器的正确字节中。
但这对我来说似乎只是故事的一半,我很难弄清楚确切的细节。 IE。我正在努力理解哪些字节将从哪些地址移动到哪里。
那么究竟这些说明做了什么?
【问题讨论】:
标签: assembly mips memory-alignment instructions instruction-set