小编Knm*_*Knm的帖子

我可以分别访问__uint128_t中的两个64位寄存器吗?

考虑下面的代码。我们知道一个__uint128_t变量存储在 2 个 64 位寄存器中(假设 x64 处理器)。要求是将前 64 位存储在一个 unsigned long 变量中,并将接下来的 64 位存储在另一个 unsigned long 变量中。

__uint128_t a = SOMEVALUE;
unsigned long b = a&0xffffffffffffffff;
unsigned long c = a>>64;
Run Code Online (Sandbox Code Playgroud)

这里,b存储前 64 位,c存储接下来的 64 位。有没有其他更简单的方法来分别访问两个寄存器而不是执行&>>操作?我问这个问题是因为对于我的项目,这部分代码将被执行一万亿次以上。所以这个疑问还是先验证一下比较好。

有什么汇编代码可以让我闲逛吗?

c assembly int128 cpu-registers

5
推荐指数
2
解决办法
233
查看次数

标签 统计

assembly ×1

c ×1

cpu-registers ×1

int128 ×1