当我阅读一些Golang汇编代码时,我发现了MOVOU
指令。但是在谷歌上搜索时,我没有找到关于该指令的任何信息。
例如:src/runtime/asm_amd64.s#L933
MOVOU -16(AX), X1
当我阅读一些Golang汇编代码时,我发现了MOVOU
指令。但是在谷歌上搜索时,我没有找到关于该指令的任何信息。
例如:src/runtime/asm_amd64.s#L933
MOVOU -16(AX), X1
很不幸,Go x86语法中存在许多奇怪的名称、不一致性和问题。
正如评论中指出的那样,MOVOU应该是MOVDQU。
我试图维护Go汇编补充参考文档,它填补了官方文档的一些空白,但目前它已经过时并需要进行一些清理。
当实现细节稳定下来后,我打算在那里写AVX512的详细信息。
我希望它对于快速搜索一些Go汇编问题是有用的ctrl+F
。
对于你的特定问题,这肯定是有用的:
你可能会发现x86.v0.2.csv很有用,因为它为每个列出的指令提供了Intel、GNU和Go语法。v0.2
在名称中表明,未来将会有更新和修复。PADDD
而不是PADDL
。由于向后兼容性,这不太可能改变。vmovdqa(AX),x1
进行AVX-128加载,但对于非VEX遗留SSE编码,则使用movo(AX),x1
(这会使ymm1 / zmm1的上半部分保持不变)? 这很有趣... 但是,停止自己创造名称可能是好事;一旦开始使用包含数字的英特尔指令助记符,例如AVX512BW vmovdqu8
(以8位粒度掩码)或VSHUFF32x4
(128b车道洗牌的不同粒度掩码),就可能会变得非常混乱。 - Peter CordesVMOVDQA
用于AVX1指令。 - Iskander Sharipov