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

tem*_*xxx 6 x86 assembly go

当我读到一些Golang的asm代码时,我发现了MOVOU.我在谷歌搜索时无法得到任何有关此指令的信息.

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

MOVOU   -16(AX), X1
Run Code Online (Sandbox Code Playgroud)

Isk*_*pov 5

不幸的是,Go x86 语法中有很多奇怪的名称、不一致和问题。

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

我尝试维护Go 程序集补充参考,它填补了官方文档的一些文档空白,但目前它已经过时并且需要一些清理。计划在实现细节稳定后在那里编写 AVX512 细节。我希望它对快速ctrl+F搜索一些 Go asm 问题有用。

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

在此处输入图片说明

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

更糟糕的是,有别名允许您编写,例如,PADDD而不是PADDL. 由于向后兼容,这不太可能改变。

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