Assembly MIPS浮点:swc1与s.s

Assembly MIPS浮点:swc1与s.s,assembly,floating-point,mips,Assembly,Floating Point,Mips,我正在做一些涉及MIPS汇编的工作,我经常遇到这四个浮点加载/存储伪指令:l.s,l.d,s.s,s.d。我在网上找到了一些文档,发现有四条“实际”指令似乎在做同样的事情:lwc1,ldc1,swc1,和sdc1 我唯一的问题是,有什么区别?据我所知,这两套指令的作用完全相同。赝品的存在是否仅仅是因为它们更容易阅读 提前感谢您的帮助。事实上,我认为 LWC1 is Load Word to Co-processor 1 LDC1 is Load Double Word to Co-process

我正在做一些涉及MIPS汇编的工作,我经常遇到这四个浮点加载/存储伪指令:
l.s
l.d
s.s
s.d
。我在网上找到了一些文档,发现有四条“实际”指令似乎在做同样的事情:
lwc1
ldc1
swc1
,和
sdc1

我唯一的问题是,有什么区别?据我所知,这两套指令的作用完全相同。赝品的存在是否仅仅是因为它们更容易阅读

提前感谢您的帮助。

事实上,我认为

LWC1 is Load Word to Co-processor 1
LDC1 is Load Double Word to Co-processor 1
等等


你猜怎么着,我在一个专利页上找到了这些

-通过将一条冲突指令延迟到与第三条非冲突指令相同的管道阶段,重新调度发出的冲突指令

FPC 20实现了两种类型的加载指令:
LWC1(加载字协处理器1,如图4所示)和
LDC1(加载双字协处理器1,如图8所示)

LWC1将一个32位字从内存子系统加载到FPC通用寄存器中。
LDC1将64位双字从内存子系统加载到FPC通用寄存器中

这证实了这一点。
(顺便说一句:除非你愿意,否则不要费心搜索这里提到的数字 有权访问网站)

我唯一的问题是,有什么区别?据我所知,这两套指令的作用完全相同

是的,你说得对。唯一可能出现的区别是将伪指令转换为多条“实”指令

赝品的存在是否仅仅是因为它们更容易阅读

再一次,是的。这就是它们存在的原因。它们给人一种更具表现力的指令集的错觉。引述:

。。。汇编程序还可以将机器语言指令的常见变体视为它们本身的指令。硬件不需要实现这些指令;然而,它们在aassembly语言中的出现简化了翻译和编程

举个例子,更“清楚”的说法是:

您可以更好地理解:

move $7, $18        # move contents of $18 to $7


对我来说,助记法可以帮助我获得更好的易读代码。

谢谢,但我已经理解了这一点(这些在官方文档中列出)。也许我应该更清楚,但我的问题是每个加载/存储单/双指令的伪指令版本与实际版本(lwc1 vs l.s,ldc1 vs l.d,等等)之间的差异。我认为使用psudocode和指令集名称的原因是为了简化psudocode并使其能够跨ISA中的各种变体进行移植。
lwc1 $f2, 24(t1)      # Load Word into Coprocessor 1 from 24(t1) to $f2
move $7, $18        # move contents of $18 to $7
add $7, $18, $0