当我读到一些Golang的asm代码时,我发现了MOVOU
.我在谷歌搜索时无法得到任何有关此指令的信息.
例如:src/runtime/asm_amd64.s#L933
MOVOU -16(AX), X1
Run Code Online (Sandbox Code Playgroud)
不幸的是,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。)