GCCはAMD64の128ビットintをサポートしていますか?[重複]
-
29-09-2020 - |
質問
GCCはAMD64の128ビットINTをサポートしていますか?
定義方法?
Scanf / Printfを使って読み書きする方法?
質問
GCCはAMD64の128ビットINTをサポートしていますか?
定義方法?
Scanf / Printfを使って読み書きする方法?
解決
__int128
とunsigned __int128
型をサポートしています(64-ビットプラットフォームのみ)、しかし、128ビット整数のフォーマットのサポートはlibcでは一般的ではありません。
注:<stdint.h>
は、GCC4.6の前のバージョンの__int128_t
と__uint128_t
を定義します。関連項目はGCCに128ビット整数がありますか? GCC / CLANG / ICCバージョンの表のための。
他のヒント
void f(__int128* res, __int128* op1, __int128* op2)
{
*res = *op1 + *op2;
}
.
test.cに保存し、でコンパイルします。
$ gcc -c -O3 test.c
$ objdump -d -M intel test.o
.
あなたは取得します:
mov rcx, rdx
mov rax, [rsi]
mov rdx, [rsi+0x8]
add rax, [rcx]
adc rdx, [rcx+0x8]
mov [rdi], rax
mov [rdi+0x8], rdx
.
__int128
タイプは、2つの命令を使用して2つの命令を使用して2つの命令を使用する標準的なビッグINTパターンを使用して、2つの命令を使用してそれらを操作することによってサポートされています。>