答案 0 :(得分:21)
答案 1 :(得分:13)
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
正如您所看到的那样,通过保持两个64位顺序然后使用两个指令的典型大整数模式对它们进行操作来支持__int128
类型,例如ADD然后ADC(随附加载) )