MIPS浮点:swc1与ss

6 floating-point assembly mips

我做了一些工作,涉及MIPS装配和我保持跨越这四个浮点加载/存储伪指令来:l.s,l.d,s.s,s.d.我发现了一些在线文档和想通了,有四个"实际"的说明,似乎做同样的事情:lwc1,ldc1,swc1,和sdc1.

我唯一的问题是,有什么区别?据我所知,两组指令完全相同.伪也可能因为它们更容易阅读而存在吗?

提前感谢您的任何见解.

Eli*_*pos 9

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

你是对的.可能出现的唯一区别是伪指令被转换为多个"真实"指令.

伪也可能因为它们更容易阅读而存在吗?

再次,是的.这就是他们存在的原因.他们给出了一个更具表现力的指令集的幻觉.引用计算机组织和设计/ Patterson&Hennessy:

...汇编程序还可以处理机器语言指令的常见变体,就好像它们本身就是指令一样.硬件不需要实现这些指令; 然而,它们在组装语言中的出现简化了翻译和编程....

举个例子,它更"清楚"地说:

l.s $f2, 24(t1)       # Load Single contained in 24(t1) to $f2
Run Code Online (Sandbox Code Playgroud)

lwc1 $f2, 24(t1)      # Load Word into Coprocessor 1 from 24(t1) to $f2
Run Code Online (Sandbox Code Playgroud)

以及你可以更好地理解:

move $7, $18        # move contents of $18 to $7
Run Code Online (Sandbox Code Playgroud)

add $7, $18, $0
Run Code Online (Sandbox Code Playgroud)

对我来说,只需要助记符来帮助我获得更好的清晰代码.