🙃
Оказалось что этот символ меняет имя
Anonymous
Какие книги посоветуете почитать для начала?)
Andrei
🙃
https://msdn.microsoft.com/en-us/library/56h2zst2.aspx#Anchor_2
Anonymous
Спасибо!
🙃
>The form of decoration for a C function depends on the calling convention used in its declaration, as shown in the following table. This is also the decoration format that is used when C++ code is declared to have extern "C" linkage. The default calling convention is __cdecl. Note that in a 64-bit environment, functions are not decorated.
Санжар
Vsevolod
отцы, задам тупой вопрос: есть ли способ проинициализировать в конструкторе базовый класс, используя свой же нестатический мембер?
Vsevolod
грубо говоря, Derived() : elt(), Base(elt) {}
Olesya
не знаю, у меня весьма большой модуль, и всё там хорошо. впрочем, мож, я не знаю, что имеется в виду под "большим проектом"
Vsevolod
судя по стандарту, Base будет всегда инициализироваться до elt
Anton
Vsevolod
ну и есть ли какое-то красивое решение?
Matwey
Anton
Aidar
Vsevolod
наследование тут очень коряво ложится на декомпозицию
Aidar
кажется ты просто неправильно юзаешь наследование
Vsevolod
у меня это внутренний член pimpl
Anton
да, коряво...
Aidar
Aidar
я думал pimpl делается полагаясь на ODR
Vsevolod
долго объяснять, base_from_member выглядит разумным решением проблемы
Aidar
мда...
DJm00n
добрый вечер.
портируем одну 3д игру с сетевым режимом с x32 на x64. конпилер msvs2015. столкнулись с проблемой - на разных компах (intel/amd) результаты вычислений float расходятся в каком-то знаке и их невозможно синхронизировать по сети.
нагуглил _controlfp (https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/controlfp-s) и DAZ/FTZ (https://software.intel.com/en-us/node/523328) флаги регистра MXCSR (SSE регистр). пробовали разные варианты их установки - пока к решению не пришли.
может кто сталкивался и подскажет, как сделать результаты вычислений floatов одинаковыми на разных машинах x64? +в идеале на разных x32 и x64 машинах.
🐙 Antony
🐙 Antony
Подробности есть тут https://msdn.microsoft.com/en-us/library/e7s85ffb.aspx
DJm00n
это первое, что делали
DJm00n
о, кажись нашел похожее: https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/ThirdParty/PhysX/PxShared/src/foundation/src/windows/PsWindowsFPU.cpp
Pavel
Pavel
Я хз правда, поможет или нет
Pavel
DJm00n
там прикол в том, что помимо этого (x87 vs sse) есть еще и разные флаги, которые может менять кто попало (crt/directx и тд) и они влияют на результат вічислений
Pavel
DJm00n
Что там?)
https://pastebin.com/08dpXV7T
DJm00n
+ https://pastebin.com/HW8LPRns тоже под юниксы. жесть конечно.
Aidar
вы сделали ошибку тогда когда решили что на это можно полагаться
Igor
https://gafferongames.com/post/floating_point_determinism/ тут много ссылок почитать
DJm00n
Aidar
надо позвать костю чтоб рассказал что у флоатов не существует понятия равенства
Aidar
@webreh
DJm00n
Pavel
Aidar
Aidar
и это чтото как раз решает
Aidar
синхронизация всеравно нужна
Aidar
через н времени вам захочется вынести вычисление чего-нибудь на гпу и вы еще больше соснете
DJm00n
ну вот и у нас синхронизация (). раз в Н секунд. и к этому моменту уже начинаются расходиться координаты и тд в 6 знаке.
DJm00n
не. логика отдельно, графика отдельно. разные потоки.
Aidar
причем тут потоки и графика
Aidar
имею ввиду только gpgpu
🙃
https://randomascii.wordpress.com/2013/07/16/floating-point-determinism/
🙃
Вот тут немного рассказывается о проблемах с флоатами в разных средах
🙃
может поможет
🙃
вообще этот мужик целый цикл статей имеет о числах с плавающей запятой
🦥Alex Fails
DJm00n
Она не битая.видно только залогиненым подписчикам epic games.
🦥Alex Fails
а, ясно, приватный репо
Ioann_
Ioann_
Можно методы Шевчука использовать для удвоения точности
Ioann_
Т.е флоат станет даблом, дабл станет чем то большим !
Ioann_
Хотя я не в тему мб ?
DJm00n
Ioann_
Да тут надо фиксированную запятую, видимо !
Aidar
дает что нибудь?
🦥Alex Fails
Я ходил на бесплатные курсы интела как-то
Evgenii
cpu_features – a cross-platform C library to retrieve CPU features at runtime https://github.com/google/cpu_features
Vsevolod
проверять по cpuid/cpuinfo ненадежно
Vsevolod
правильно - доверять, но проверять с обработчиком SIGILL и longjmp
Evgenii
🦥Alex Fails
Vsevolod
https://github.com/vstakhov/rspamd/blob/master/src/libcryptobox/cryptobox.c#L136
Vsevolod
были ситуации, когда cpuid репортил AVX, а ОС его не поддерживала
Vsevolod
или в каких-то кривых kvm окружениях
Vsevolod
с rdrand проблемы были у valgrind