我正在做一些涉及的工作MIPS
汇编,我不断遇到这四个浮点加载/存储伪指令:l.s
, l.d
, s.s
, s.d
。我在网上找到了一些文档,发现有四个“实际”指令似乎可以做同样的事情:lwc1
, ldc1
, swc1
, and sdc1
.
我唯一的问题是,有什么区别?据我所知,两组指令的作用完全相同。伪类的存在可能只是因为它们更容易阅读吗?
我唯一的问题是,有什么区别?据我所知,两组指令的作用完全相同。
你是对的。可能出现的唯一区别是伪指令被转换为多个“真实”指令时。
伪类的存在可能只是因为它们更容易阅读吗?
再说一次,是的。那是why它们存在。它们给人一种更具表现力的指令集的错觉。引用:
...汇编器还可以将机器语言指令的常见变体视为它们本身的指令。硬件不需要执行这些指令;然而,它们以汇编语言出现简化了翻译和编程。 ...
鉴于你的例子,更“清楚”地说:
l.s $f2, 24(t1) # Load Single contained in 24(t1) to $f2
than
lwc1 $f2, 24(t1) # Load Word into Coprocessor 1 from 24(t1) to $f2
(这些注释只是扩展了人类阅读 asm 助记符和操作数的方式,因此not实际编写有用的注释。从另一个观点来看,你可以说lwc1
实际上可能值得评论# load single
while l.s
是不言自明的。)
同样对于整数,你可以更好地理解:
move $7, $18 # move contents of $18 to $7
than
add $7, $18, $0
对我来说,只是通过助记符来帮助获得更好易读的代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)