什么" MOVOU"在golang汇编中意味着什么

时间:2016-12-24 15:55:45

标签: assembly go x86

当我阅读一些Golang的asm代码时,我找到了MOVOU。而且我无法通过Google搜索获得有关此说明的任何信息。

例如:src/runtime/asm_amd64.s#L933

MOVOU   -16(AX), X1

1 个答案:

答案 0 :(得分:4)

不幸的是,Go x86语法中存在许多奇怪的名称,不一致和问题。

正如评论中已经指出的那样,MOVOU是MOVDQU。

我尝试维护Go assembly complementary reference,这填补了官方文档的一些文档空白,但目前它已经过时了,需要进行一些清理。 当implementation details稳定时,计划在那里写AVX512详细信息。 我希望快速ctrl+F搜索一些Go asm问题是有用的。

对于您的特定问题,它绝对有用:

enter image description here

您可能会发现x86.v0.2.csv很有用,因为它为每个列出的指令提供了Intel,GNU和Go语法。 顾名思义,v0.2表示将来会有更新和修复。

更糟糕的是,有aliases允许您编写,例如PADDD而不是PADDL。 由于向后兼容性,这种情况不太可能发生变化。

为了避免完全负面的印象,Go asm“做得好”有一些东西。例如,它检查立即操作数宽度,以查找只能设置较低N位的指令。 它也不允许“无符号”立即操作数的负常数 (作为奖励,这里有一个问题,包含一些关于这个主题的Russ Cox想法:issue21528。)

相关问题