__int128 поддерживается emscripten? Если нет, то как реализовать 128-битное умножение int?

Я пытаюсь скомпилировать проект C в Javascript, используя Emscripten, и у меня есть очень простой код, который использует расширение GCC, поддерживающее __int128 как видно ниже:

unsigned __int128 r = (unsigned __int128)a * (unsigned __int128)b;
*hi = r >> 64;
return (uint64_t)r;

Теперь эти переменные приводятся из uint64_t известные мне указатели поддерживаются в Emscripten, но я получаю ошибку при компиляции, которая говорит

error: __int128 is not supported on this target

Итак, либо я не знаю, как включить поддержку, либо нет поддержки для этого типа. Если последнее, есть ли у кого-нибудь советы, как имитировать 128-битное умножение без знака без поддержки типа? Похоже, в коде нет необходимости сохранять результат в полной 128-битной форме без знака, так как строка сразу после умножения сдвигает число до 64-битного целого без знака.

0 ответов

Другие вопросы по тегам