문제

gcc는 amd64에서 128비트 int를 지원합니까?

그것을 정의하는 방법은 무엇입니까?

scanf/printf를 사용하여 읽고 쓰는 방법은 무엇입니까?

도움이 되었습니까?

해결책

GCC 내장 지원 __int128 그리고 unsigned __int128 유형(64비트 플랫폼에만 해당)이 있지만 128비트 정수에 대한 형식 지원은 libc에서는 덜 일반적입니다.

메모: <stdint.h> 정의하다 __int128_t 그리고 __uint128_t gcc4.6 이전 버전.또한보십시오 gcc에 128비트 정수가 있나요? gcc/clang/ICC 버전 테이블의 경우.

__uint128_t가 정의되었는지 확인하는 방법 탐지를 위해 __int128

다른 팁

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 유형이 두 개의 64 비트를 순서대로 유지 한 다음 두 가지 명령어를 사용하여 일반적인 빅 int 패턴을 사용하여 두 개의 지침을 사용하여 수행 한 다음 ADC (캐리 포함)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top