相关疑难解决方法(0)

Rust的128位整数“ i128”如何在64位系统上工作?

Rust具有128位整数,这些整数用数据类型表示i128u128对于无符号整数):

let a: i128 = 170141183460469231731687303715884105727;
Run Code Online (Sandbox Code Playgroud)

Rust如何使这些i128值在64位系统上工作?例如,如何对这些进行算术运算?

据我所知,既然该值不能容纳在x86-64 CPU的一个寄存器中,那么编译器是否会以某种方式使用2个寄存器i128?还是他们改用某种大整数结构来表示它们?

x86-64 int128 bigint rust llvm-codegen

116
推荐指数
4
解决办法
1万
查看次数

gcc是否支持amd64上的128位int?

gcc是否支持amd64上的128位int?

如何定义?

如何使用scanf/printf进行读/写?

c gcc 128-bit extended-precision

23
推荐指数
2
解决办法
1万
查看次数

GCC __attribute __((模式(XX))实际上做了什么?

这源于今天早些时候关于bignum库和gcc特定的C语言攻击主题的问题.具体来说,使用了这两个声明:

typedef unsigned int dword_t __attribute__((mode(DI)));
Run Code Online (Sandbox Code Playgroud)

在32位系统和

typedef unsigned int dword_t __attribute__((mode(TI)));
Run Code Online (Sandbox Code Playgroud)

在64位系统上.

我假设这是对C语言的扩展,没有办法实现它在当前(C99)标准中实现的任何目标.

所以我的问题很简单:这个假设是否正确?这些陈述对底层内存有何影响?我认为结果是我2*sizeof(uint32_t)对于dword32位系统和2*sizeof(uint64_t)64位系统,我是否正确?

c attributes c99 bignum

22
推荐指数
1
解决办法
1万
查看次数

是否可以使用SSE和SSE2来生成128位宽的整数?

我想更多地了解SSE2的功能,并想知道是否可以制作支持加法,减法,XOR和乘法的128位宽整数?

assembly sse sse2

10
推荐指数
1
解决办法
1417
查看次数

实用的BigNum AVX/SSE可能吗?

SSE/AVX寄存器可以被视为整数或浮点BigNums.也就是说,人们可以忽视存在通道.是否有一种简单的方法可以利用这种观点并将这些寄存器单独或组合用作BigNum?我问,因为我从BigNum库中看到的很少,它们几乎普遍存储并对数组进行算术运算,而不是SSE/AVX寄存器.可移植性?

例:

假设您将SSE寄存器的内容存储为a中的键std::set,您可以将这些内容作为BigNum进行比较.

sse simd biginteger avx extended-precision

10
推荐指数
2
解决办法
3167
查看次数