在从核中将uintv8向量的第0个字节(值为97)移位到第31个字节,代码如下
simd_print_uintv8(inpwd);
int shamt = (32 - len) << 3;
inpwd = simd_sllow((uint256)inpwd, shamt);
simd_print_uintv8(inpwd);
当len的值为1时,shamt = 248,输出如下,可以计算出实际只左移了28位
[ 0, 0, 0, 0, 0, 0, 0, 97 ]
[ 0, 0, 0, 0, 0, 0, 6, 268435456 ]
而当代码改为如下形式后,
simd_print_uintv8(inpwd);
int shamt = 248;
inpwd = simd_sllow((uint256)inpwd, shamt);
simd_print_uintv8(inpwd);
输出结果如下,可以计算出实际左移了248位,符合预期
[ 0, 0, 0, 0, 0, 0, 0, 97 ]
[ 1627389952, 0, 0, 0, 0, 0, 0, 0 ]
为何shamt的值相同,但simd_sllow函数得到的结果完全不同?