Yic*_*hou 23 c gcc 128-bit extended-precision
gcc是否支持amd64上的128位int?
如何定义?
如何使用scanf/printf进行读/写?
rkh*_*rov 22
GCC支持内置__int128和unsigned __int128类型(仅在64位平台上),但看起来对于128位整数的格式化支持在libc中不太常见.
注意:在gcc4.6之前<stdint.h>定义__int128_t和__uint128_t版本.另请参阅gcc中是否有128位整数?获取gcc/clang/ICC版本的表格.
如何知道__uint128_t是否被定义用于检测__int128
And*_*zos 14
void f(__int128* res, __int128* op1, __int128* op2)
{
*res = *op1 + *op2;
}
Run Code Online (Sandbox Code Playgroud)
保存到test.c并编译:
$ gcc -c -O3 test.c
$ objdump -d -M intel test.o
Run Code Online (Sandbox Code Playgroud)
你得到:
mov rcx, rdx
mov rax, [rsi]
mov rdx, [rsi+0x8]
add rax, [rcx]
adc rdx, [rcx+0x8]
mov [rdi], rax
mov [rdi+0x8], rdx
Run Code Online (Sandbox Code Playgroud)
正如您所看到的那样,__int128通过依次保持两个64位然后使用两个指令的典型大整数模式对它们进行操作来支持该类型,例如ADD然后ADC(带进位加)
| 归档时间: |
|
| 查看次数: |
11226 次 |
| 最近记录: |