我正在尝试实现一个小子例程,它将返回在RAR 过滤器 VM 语言内部旋转 N 个位置到左侧的单词,它与 x86 有着惊人的相似之处,并且出于所有意图和目的都可以被认为是 x86没有“扩展名”。
我试图复制的代码段(新标准化 SHA-3 标准 Keccak 的“Theta”步骤的一部分)
(((x) << (y)) | ((x) >> (64 - (y))))
看起来很简单,但是 RAR VM 使用 32 位宽的寄存器,但我需要实现的小例程可以提供 64 位值。
shl
将结果“溢出”或进入另一个寄存器的最自然方法是什么,shr
以便我可以重建 x << y 和 x >> 64 - y?如标题所示,我无权访问溢出标志。
注意:这是来自汇编器的一些代码示例,因此您可以看到我必须使用哪些指令。https://gist.github.com/581f7e162eebd652ee4b