OpenXRay, Открытый проект направленный на улучшение движка под капотом |
Здравствуйте, гость ( Авторизация | Регистрация )
Сайт S.T.A.L.K.E.R. Inside / [ЗП] Параметры командной строки / Распаковщик ресурсов
OpenXRay, Открытый проект направленный на улучшение движка под капотом |
11.03.2018, 19:56
Сообщение
#41
|
|
Продвинутый геймер Репутация: 36 Куратор темы Сообщений: 267 Регистрация: 09.03.2013 |
OpenXRay Открытый проект, направленный на улучшение движка под капотом, исправление оригинальных багов, улучшении производительности и качества кода. Мы открыты для любых других изменений, будь то геймплейные изменения или графические. Просто перед любым серьёзным изменением нужно обсудить все за и против. Основные преимущества и не только:
Приглашаем всех сталкеров для участия в разработке: как в улучшении самого проекта, так и использовании его в качестве базы для своих модов. Крайне благодарны за отзывы и сообщения и любых проблемах случившихся у вас. Как скачать, установить и играть Инструкция по установке и ссылки на скачивание находятся Благодарим Call of Chernobyl Lost Alpha X-Ray Oxygen Shoker Gunslinger mod avoitishin Morrey Abramcumner KRodinn Swartz27 avbaula electrobas94 jazzvaz SkyLoader А также всех остальных, кто не упомянут здесь. Если использованы ваши наработки, но вас здесь нет, напишите – добавим =) Сообщение отредактировал Xottab_DUTY - 21.10.2019, 22:49 -------------------- OpenXRay – Ориентир на новое, с памятью о старом. © Collector
|
 
|
|
|
|
16.03.2018, 12:04
Сообщение
#42
|
|
Продвинутый геймер Репутация: 36 Куратор темы Сообщений: 267 Регистрация: 09.03.2013 |
Antnigm, как именно меняешь? Что в логе?
-------------------- OpenXRay – Ориентир на новое, с памятью о старом. © Collector
|
 
|
|
16.03.2018, 12:07
Сообщение
#43
|
|
Продвинутый геймер Репутация: 16 Группа: Участник Сообщений: 222 Награды: 3 Регистрация: 28.06.2016 |
Xottab_DUTY, скорее всего разрешение экрана - тоже сталкивался с такой проблемой, в логе ничего нет( Игра падает, перезапускаешь - новое разрешение применяется.
|
 
|
|
27.03.2018, 15:00
Сообщение
#44
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Я так понял что ХР не поддерживается. Смысл использовать 2017 студию, ничего она кроме гемора не даёт.
-------------------- СТАЛКЕР только для ПК!
|
 
|
|
27.03.2018, 16:12
Сообщение
#45
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Смысл использовать 2017 студию, ничего она кроме гемора не даёт. NanoBot-AMK, ну, как минимум: последний компилятор, удобство/скорость работы среды на проекте такого размера. А про какой геммор говоришь ты? ) Сообщение отредактировал Neo][ - 27.03.2018, 16:14 -------------------- |
 
|
|
27.03.2018, 17:22
Сообщение
#46
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
|
 
|
|
27.03.2018, 19:34
Сообщение
#47
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
jamakasi, 7-ка сдохла. А ХР кое как, но работает. Новые студии просто загромождают проект всякими тупыми библиотека, которые вроде как должны повысить скорость, но конечно, такой скорости не дают*. Я про анализировал код IDA Pro 6.8, куча мёртвых функций, синусы по прежнему не инлайн, в общем не вижу смысла использовать VS2017. Я даже не использую в XRayExt SSE2, что бы Athlon XP могли работать.
* - если нет кеша 3-го уровня, то промах кеша съест всё преимущество. -------------------- СТАЛКЕР только для ПК!
|
 
|
|
27.03.2018, 19:56
Сообщение
#48
|
|
. Репутация: 750 Группа: Участник Сообщений: 7072 Награды: 4 Регистрация: 30.07.2010 |
|
 
|
|
27.03.2018, 20:52
Сообщение
#49
|
|
Доктор Игровых Наук Репутация: 544 Группа: Участник Сообщений: 3657 Награды: 9 Регистрация: 12.07.2007 |
jamakasi, 7-ка сдохла. А ХР кое как, но работает. Новые студии просто загромождают проект всякими тупыми библиотека, которые вроде как должны повысить скорость, но конечно, такой скорости не дают*. Я про анализировал код IDA Pro 6.8, куча мёртвых функций, синусы по прежнему не инлайн, в общем не вижу смысла использовать VS2017. Я даже не использую в XRayExt SSE2, что бы Athlon XP могли работать. * - если нет кеша 3-го уровня, то промах кеша съест всё преимущество. Не думал что скорости и не будет на старом железе?) А то что есть колоссальная зависимость "мусора" в зависимости от компилятора и ключей при компиляции?) Цитата Modera, Да ну что за гон, есть же версия под х86-64. Гыг Попробуй её! Когда найдешь хоть одну софтинку которая просто сможет на ней запуститься то зови, ну или если запустишь на ней х32 софт ХРх64 такое же мертвое чудо как и XP 64-Bit Edition(версия для Itanium такая же мертвая как и эти камни), такое же как Win RT. Вот прям сейчас, для домашнего юзания а не корп спецухи где это необходимость, юзать ХР это уже просто аут, софт медленно но верно прекратил развитие как и дрова, директа нового нет, дырявая, нормальной поддержки нового железа нет, новых игр нет в конце концов. Тут если железо настолько убогое то хотябы на висту\7ку переезжать, в крайнем случае на 8.1 которая на удивление отлично умудряется впахивать даже на 2х гб рам и обычном харде не самом шустром. |
 
|
|
27.03.2018, 21:09
Сообщение
#50
|
|
. Репутация: 750 Группа: Участник Сообщений: 7072 Награды: 4 Регистрация: 30.07.2010 |
Гыг Попробуй её! Когда найдешь хоть одну софтинку которая просто сможет на ней запуститься то зови, ну или если запустишь на ней х32 софт ХРх64 такое же мертвое чудо как и XP 64-Bit Edition(версия для Itanium такая же мертвая как и эти камни), такое же как Win RT. Прикинь, с 2014 года только её и пробую. 32-битный софт весь работает на ура, из х64 юзал 2009 майю, фаерфокс, клиент для меркуриал, какую-то игрушку на юнити, крузис2, оперу и ещё дофига чего. Лучше ты действительно сам попробуй, а потом пиши. |
 
|
|
27.03.2018, 21:31
Сообщение
#51
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
jamakasi, 7-ка сдохла. А ХР кое как, но работает. Новые студии просто загромождают проект всякими тупыми библиотека, которые вроде как должны повысить скорость, но конечно, такой скорости не дают*. Я про анализировал код IDA Pro 6.8, куча мёртвых функций, синусы по прежнему не инлайн, в общем не вижу смысла использовать VS2017. Я даже не использую в XRayExt SSE2, что бы Athlon XP могли работать. * - если нет кеша 3-го уровня, то промах кеша съест всё преимущество. Надеюсь на момент написания поста ты был в курсе про особенности различных платформ и реализация тригонометрических функций на них, о интринсиках, о том, что компилятор имеет настройки, а также о том, что Athlon XP по меркам it это примерно ископаемое!? * - про кэшмиссы, это про какие функции идёт речь и что вообще здесь имелось ввиду? ** - и не стоит забывать, что компилятор делает только безопасные оптимизации и код написанный без учёта этого факта может быть печальным на выходе -------------------- |
 
|
|
27.03.2018, 22:11
Сообщение
#52
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
Смысл использовать 2017 студию Не нравится - не используй, есть полно альтернативных средств разработки: eclipse, codeblocks, qtcreator, clion, sublime, notepad++, vim - десятки их. Но развитие отрасли просто обязывает использовать современные компиляторы, поддерживающие современные стандарты языка и оптимизированные под современное железо, иначе разрабатываемый тобой софт попросту никому не будет нужен. -------------------- nop
|
 
|
|
27.03.2018, 22:22
Сообщение
#53
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Athlon XP по меркам it это примерно ископаемое!? Ответь, Athlon XP 3200 тянет сталкер с хорошей видюхой? Я думаю тянет, но это аналог третьего пня, не четвёртого. Ладно double в XRay почти не используется, SSE хватает. Синусы, косинусы могут вычислять без всяких проблем начиная с 486DX(у более младших моделей, этим занимался отдельный сопроцессор, которого могло не быть), размер команды синусов косинусов всего 2 байта, значит они не как не могут быть не инлайн. Фреймворки эти все, от лукавого. Короче, лучше юзать VS2010, оптимизацию делать вручную, векторы, выравнивания и т.д. Мелкософт давно деградировал, туда же тянет все кодеров. Может перейти на Intel C++ Compiler, считается что самый мощный оптимизатор, кто ещё, кроме ребят из Intel, лучше всего разбираются в СВОИХ процессорах. -------------------- СТАЛКЕР только для ПК!
|
 
|
|
27.03.2018, 22:30
Сообщение
#54
|
|
Продвинутый геймер Репутация: 36 Куратор темы Сообщений: 267 Регистрация: 09.03.2013 |
Кстати, хорошая идея скомпилировать на ICC.. Надо будет попробовать как-нибудь
-------------------- OpenXRay – Ориентир на новое, с памятью о старом. © Collector
|
 
|
|
27.03.2018, 22:38
Сообщение
#55
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
размер команды синусов косинусов всего 2 байта, значит они не как не могут быть не инлайн. летели два крокодила - один зеленый, другой направо Извините. -------------------- nop
|
 
|
|
27.03.2018, 23:16
Сообщение
#56
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
летели два крокодила - один зеленый, другой направо biggrin.gif Извините. Для особо одарённых, объясняю, радиостанции будут установлены на тачанках! Синусы, косинусы должны быть инлайн. Извините. -------------------- СТАЛКЕР только для ПК!
|
 
|
|
27.03.2018, 23:54
Сообщение
#57
|
|
Почти Игроман Репутация: 91 Группа: Модератор Сообщений: 516 Награды: 4 Регистрация: 19.07.2015 |
Короче, лучше юзать VS2010 Или Борланд, как говорил Saas. Мазахизм. У меня Win 8.1, на которой 10 vs даже не ставится, окромя Eng версии. К тому же, лицезреть интерфейс, Аля привет WinXP, нет никакого желания. Как минимум 2012 студия с фитчами С++11. -------------------- В армии по 01.07.2020. |
 
|
|
28.03.2018, 00:36
Сообщение
#58
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
Как минимум 2012 студия с фитчами С++11 В полном объеме С++11 поддерживается начиная с vs2015 (v140). Но суть не в этом, не правильно отождествлять студию с набором инструментов, это лишь удобная среда разработки, не более. Можно установить Windows SDK и писать код хоть в блокноте. -------------------- nop
|
 
|
|
28.03.2018, 00:55
Сообщение
#59
|
|
Почти Мастер Репутация: 75 Группа: Участник Сообщений: 1168 Награды: 4 Регистрация: 10.11.2015 |
Как минимум 2012 студия с фитчами С++11. Возможно! Но не как 2017. -------------------- СТАЛКЕР только для ПК!
|
 
|
|
28.03.2018, 07:32
Сообщение
#60
|
|
The One Репутация: 744 Группа: Участник Сообщений: 2715 Награды: 5 Регистрация: 05.12.2005 |
Ответь, Athlon XP 3200 тянет сталкер с хорошей видюхой? NanoBot-AMK, а всё остальное в моем сообщении тебя не зацепило? А из твоего вопроса следует, что производительности и столь древнего проца по за глаза и это даже без инлайна sin размер команды синусов косинусов всего 2 байта, значит они не как не могут быть не инлайн NanoBot-AMK, по всей видимости ты про "D9 FE". Ну, я надеюсь ты представляешь что это и какие имеет ограничения. И почему зачастую на практике это может выглядеть как: GCC x86_64 sincosf intrinsic .text 73 ENTRY(__sincosf) 74 /* Input: %xmm0 contains single precision argument x */ 75 /* %rdi points to sin result */ 76 /* %rsi points to cos result */ 77 78 movd %xmm0, %eax /* Bits of x */ 79 movaps %xmm0, %xmm7 /* Copy of x */ 80 cvtss2sd %xmm0, %xmm0 /* DP x */ 81 movss L(SP_ABS_MASK)(%rip), %xmm3 82 movl %eax, %r8d /* Copy of x bits */ 83 andl $0x7fffffff, %eax /* |x| */ 84 85 cmpl $0x3f490fdb, %eax /* |x|<Pi/4 ? */ 86 jb L(arg_less_pio4) 87 88 /* Here if |x|>=Pi/4 */ 89 andps %xmm7, %xmm3 /* SP |x| */ 90 andpd L(DP_ABS_MASK)(%rip),%xmm0 /* DP |x| */ 91 movss L(SP_INVPIO4)(%rip), %xmm2 /* SP 1/(Pi/4) */ 92 93 cmpl $0x40e231d6, %eax /* |x|<9*Pi/4 ? */ 94 jae L(large_args) 95 96 /* Here if Pi/4<=|x|<9*Pi/4 */ 97 mulss %xmm3, %xmm2 /* SP |x|/(Pi/4) */ 98 movl %r8d, %ecx /* Load x */ 99 cvttss2si %xmm2, %eax /* k, number of Pi/4 in x */ 100 lea L(PIO4J)(%rip), %r9 101 shrl $29, %ecx /* (sign of x) << 2 */ 102 addl $1, %eax /* k+1 */ 103 movl $0x0e, %edx 104 andl %eax, %edx /* j = (k+1)&0x0e */ 105 subsd (%r9,%rdx,8), %xmm0 /* t = |x| - j * Pi/4 */ 106 107 L(reconstruction): 108 /* Input: %eax=n, %xmm0=t, %ecx=sign(x) */ 109 110 movaps %xmm0, %xmm4 /* t */ 111 movhpd L(DP_ONES)(%rip), %xmm4 /* 1|t */ 112 mulsd %xmm0, %xmm0 /* y=t^2 */ 113 movl $2, %edx 114 unpcklpd %xmm0, %xmm0 /* y|y */ 115 addl %eax, %edx /* k+2 */ 116 movaps %xmm0, %xmm1 /* y|y */ 117 mulpd %xmm0, %xmm0 /* z=t^4|z=t^4 */ 118 119 movaps L(DP_SC4)(%rip), %xmm2 /* S4 */ 120 mulpd %xmm0, %xmm2 /* z*S4 */ 121 movaps L(DP_SC3)(%rip), %xmm3 /* S3 */ 122 mulpd %xmm0, %xmm3 /* z*S3 */ 123 xorl %eax, %ecx /* (sign_x ^ (k>>2))<<2 */ 124 addpd L(DP_SC2)(%rip), %xmm2 /* S2+z*S4 */ 125 mulpd %xmm0, %xmm2 /* z*(S2+z*S4) */ 126 shrl $2, %edx /* (k+2)>>2 */ 127 addpd L(DP_SC1)(%rip), %xmm3 /* S1+z*S3 */ 128 mulpd %xmm0, %xmm3 /* z*(S1+z*S3) */ 129 shrl $2, %ecx /* sign_x ^ k>>2 */ 130 addpd L(DP_SC0)(%rip), %xmm2 /* S0+z*(S2+z*S4) */ 131 andl $1, %edx /* sign_cos = ((k+2)>>2)&1 */ 132 mulpd %xmm1, %xmm2 /* y*(S0+z*(S2+z*S4)) */ 133 andl $1, %ecx /* sign_sin = sign_x ^ ((k>>2)&1) */ 134 addpd %xmm2, %xmm3 /* y*(S0+y*(S1+y*(S2+y*(S3+y*S4)))) */ 135 lea L(DP_ONES)(%rip), %r9 136 mulpd %xmm4, %xmm3 /*t*y*(S0+y*(S1+y*(S2+y*(S3+y*S4))))*/ 137 testl $2, %eax /* n&2 != 0 ? */ 138 addpd %xmm4, %xmm3 /*t+t*y*(S0+y*(S1+y*(S2+y*(S3+y*S4))*/ 139 jnz L(sin_result_sin_poly) 140 141 /*L(sin_result_cos_poly):*/ 142 /* 143 * Here if 144 * cos(x) = poly_sin * sign_cos 145 * sin(x) = poly_cos * sign_sin 146 */ 147 movsd (%r9,%rcx,8), %xmm4 /* 0|sign_sin */ 148 movhpd (%r9,%rdx,8), %xmm4 /* sign_cos|sign_sin */ 149 mulpd %xmm4, %xmm3 /* result_cos|result_sin */ 150 cvtpd2ps %xmm3, %xmm0 /* SP results */ 151 movss %xmm0, (ARG_SIN_PTR) /* store sin(x) from xmm0[0] */ 152 shufps $1, %xmm0, %xmm0 /* move cos(x) to xmm0[0] */ 153 movss %xmm0, (ARG_COS_PTR) /* store cos(x) */ 154 ret 155 156 .p2align 4 157 L(sin_result_sin_poly): 158 /* 159 * Here if 160 * sin(x) = poly_sin * sign_sin 161 * cos(x) = poly_cos * sign_cos 162 */ 163 movsd (%r9,%rdx,8), %xmm4 /* 0|sign_cos */ 164 movhpd (%r9,%rcx,8), %xmm4 /* sign_sin|sign_cos */ 165 mulpd %xmm4, %xmm3 /* result_sin|result_cos */ 166 cvtpd2ps %xmm3, %xmm0 /* SP results */ 167 movss %xmm0, (ARG_COS_PTR) /* store cos(x) from xmm0[0] */ 168 shufps $1, %xmm0, %xmm0 /* move sin(x) to xmm0[0] */ 169 movss %xmm0, (ARG_SIN_PTR) /* store sin(x) */ 170 ret 171 172 .p2align 4 173 L(large_args): 174 /* Here if |x|>=9*Pi/4 */ 175 cmpl $0x7f800000, %eax /* x is Inf or NaN ? */ 176 jae L(arg_inf_or_nan) 177 178 /* Here if finite |x|>=9*Pi/4 */ 179 cmpl $0x4b000000, %eax /* |x|<2^23 ? */ 180 jae L(very_large_args) 181 182 /* Here if 9*Pi/4<=|x|<2^23 */ 183 movsd L(DP_INVPIO4)(%rip), %xmm1 /* 1/(Pi/4) */ 184 mulsd %xmm0, %xmm1 /* |x|/(Pi/4) */ 185 cvttsd2si %xmm1, %eax /* k=trunc(|x|/(Pi/4)) */ 186 addl $1, %eax /* k+1 */ 187 movl %eax, %edx 188 andl $0xfffffffe, %edx /* j=(k+1)&0xfffffffe */ 189 cvtsi2sdl %edx, %xmm4 /* DP j */ 190 movl %r8d, %ecx /* Load x */ 191 movsd L(DP_PIO4HI)(%rip), %xmm2 /* -PIO4HI = high part of -Pi/4 */ 192 shrl $29, %ecx /* (sign of x) << 2 */ 193 mulsd %xmm4, %xmm2 /* -j*PIO4HI */ 194 movsd L(DP_PIO4LO)(%rip), %xmm3 /* -PIO4LO = low part of -Pi/4 */ 195 addsd %xmm2, %xmm0 /* |x| - j*PIO4HI */ 196 mulsd %xmm3, %xmm4 /* j*PIO4LO */ 197 addsd %xmm4, %xmm0 /* t = |x| - j*PIO4HI - j*PIO4LO */ 198 jmp L(reconstruction) 199 200 .p2align 4 201 L(very_large_args): 202 /* Here if finite |x|>=2^23 */ 203 204 /* bitpos = (ix>>23) - BIAS_32 + 59; */ 205 shrl $23, %eax /* eb = biased exponent of x */ 206 subl $68, %eax /* bitpos=eb-0x7f+59, where 0x7f */ 207 /*is exponent bias */ 208 movl $28, %ecx /* %cl=28 */ 209 movl %eax, %edx /* bitpos copy */ 210 211 /* j = bitpos/28; */ 212 div %cl /* j in register %al=%ax/%cl */ 213 movapd %xmm0, %xmm3 /* |x| */ 214 andl $0xff, %eax /* clear unneeded remainder from %ah*/ 215 216 imull $28, %eax, %ecx /* j*28 */ 217 lea L(_FPI)(%rip), %r9 218 movsd L(DP_HI_MASK)(%rip), %xmm4 /* DP_HI_MASK */ 219 movapd %xmm0, %xmm5 /* |x| */ 220 mulsd -16(%r9,%rax,8), %xmm3 /* tmp3 = FPI[j-2]*|x| */ 221 movapd %xmm0, %xmm1 /* |x| */ 222 mulsd -8(%r9,%rax,8), %xmm5 /* tmp2 = FPI[j-1]*|x| */ 223 mulsd (%r9,%rax,8), %xmm0 /* tmp0 = FPI[j]*|x| */ 224 addl $19, %ecx /* j*28+19 */ 225 mulsd 8(%r9,%rax,8), %xmm1 /* tmp1 = FPI[j+1]*|x| */ 226 cmpl %ecx, %edx /* bitpos>=j*28+19 ? */ 227 jl L(very_large_skip1) 228 229 /* Here if bitpos>=j*28+19 */ 230 andpd %xmm3, %xmm4 /* HI(tmp3) */ 231 subsd %xmm4, %xmm3 /* tmp3 = tmp3 - HI(tmp3) */ 232 L(very_large_skip1): 233 234 movsd L(DP_2POW52)(%rip), %xmm6 235 movapd %xmm5, %xmm2 /* tmp2 copy */ 236 addsd %xmm3, %xmm5 /* tmp5 = tmp3 + tmp2 */ 237 movl $1, %edx 238 addsd %xmm5, %xmm6 /* tmp6 = tmp5 + 2^52 */ 239 movsd 8+L(DP_2POW52)(%rip), %xmm4 240 movd %xmm6, %eax /* k = I64_LO(tmp6); */ 241 addsd %xmm6, %xmm4 /* tmp4 = tmp6 - 2^52 */ 242 movl %r8d, %ecx /* Load x */ 243 comisd %xmm5, %xmm4 /* tmp4 > tmp5 ? */ 244 jbe L(very_large_skip2) 245 246 /* Here if tmp4 > tmp5 */ 247 subl $1, %eax /* k-- */ 248 addsd 8+L(DP_ONES)(%rip), %xmm4 /* tmp4 -= 1.0 */ 249 L(very_large_skip2): 250 251 andl %eax, %edx /* k&1 */ 252 lea L(DP_ZERONE)(%rip), %r9 253 subsd %xmm4, %xmm3 /* tmp3 -= tmp4 */ 254 addsd (%r9,%rdx,8), %xmm3 /* t = DP_ZERONE[k&1] + tmp3 */ 255 addsd %xmm2, %xmm3 /* t += tmp2 */ 256 shrl $29, %ecx /* (sign of x) << 2 */ 257 addsd %xmm3, %xmm0 /* t += tmp0 */ 258 addl $1, %eax /* n=k+1 */ 259 addsd %xmm1, %xmm0 /* t += tmp1 */ 260 mulsd L(DP_PIO4)(%rip), %xmm0 /* t *= PI04 */ 261 262 jmp L(reconstruction) /* end of very_large_args peth */ 263 264 .p2align 4 265 L(arg_less_pio4): 266 /* Here if |x|<Pi/4 */ 267 cmpl $0x3d000000, %eax /* |x|<2^-5 ? */ 268 jl L(arg_less_2pn5) 269 270 /* Here if 2^-5<=|x|<Pi/4 */ 271 movaps %xmm0, %xmm3 /* DP x */ 272 movhpd L(DP_ONES)(%rip), %xmm3 /* DP 1|x */ 273 mulsd %xmm0, %xmm0 /* DP y=x^2 */ 274 unpcklpd %xmm0, %xmm0 /* DP y|y */ 275 movaps %xmm0, %xmm1 /* y|y */ 276 mulpd %xmm0, %xmm0 /* z=x^4|z=x^4 */ 277 278 movapd L(DP_SC4)(%rip), %xmm4 /* S4 */ 279 mulpd %xmm0, %xmm4 /* z*S4 */ 280 movapd L(DP_SC3)(%rip), %xmm5 /* S3 */ 281 mulpd %xmm0, %xmm5 /* z*S3 */ 282 addpd L(DP_SC2)(%rip), %xmm4 /* S2+z*S4 */ 283 mulpd %xmm0, %xmm4 /* z*(S2+z*S4) */ 284 addpd L(DP_SC1)(%rip), %xmm5 /* S1+z*S3 */ 285 mulpd %xmm0, %xmm5 /* z*(S1+z*S3) */ 286 addpd L(DP_SC0)(%rip), %xmm4 /* S0+z*(S2+z*S4) */ 287 mulpd %xmm1, %xmm4 /* y*(S0+z*(S2+z*S4)) */ 288 mulpd %xmm3, %xmm5 /* x*z*(S1+z*S3) */ 289 mulpd %xmm3, %xmm4 /* x*y*(S0+z*(S2+z*S4)) */ 290 addpd %xmm5, %xmm4 /*x*y*(S0+y*(S1+y*(S2+y*(S3+y*S4))))*/ 291 addpd %xmm4, %xmm3 /*x+x*y*(S0+y*(S1+y*(S2+y*(S3+y*S4))*/ 292 cvtpd2ps %xmm3, %xmm0 /* SP results */ 293 movss %xmm0, (ARG_SIN_PTR) /* store sin(x) from xmm0[0] */ 294 shufps $1, %xmm0, %xmm0 /* move cos(x) to xmm0[0] */ 295 movss %xmm0, (ARG_COS_PTR) /* store cos(x) */ 296 ret 297 298 .p2align 4 299 L(arg_less_2pn5): 300 /* Here if |x|<2^-5 */ 301 cmpl $0x32000000, %eax /* |x|<2^-27 ? */ 302 jl L(arg_less_2pn27) 303 304 /* Here if 2^-27<=|x|<2^-5 */ 305 movaps %xmm0, %xmm1 /* DP x */ 306 movhpd L(DP_ONES)(%rip), %xmm1 /* DP 1|x */ 307 mulsd %xmm0, %xmm0 /* DP x^2 */ 308 unpcklpd %xmm0, %xmm0 /* DP x^2|x^2 */ 309 310 movaps L(DP_SINCOS2_1)(%rip), %xmm3 /* DP DP_SIN2_1 */ 311 mulpd %xmm0, %xmm3 /* DP x^2*DP_SIN2_1 */ 312 addpd L(DP_SINCOS2_0)(%rip), %xmm3 /* DP DP_SIN2_0+x^2*DP_SIN2_1 */ 313 mulpd %xmm0, %xmm3 /* DP x^2*DP_SIN2_0+x^4*DP_SIN2_1 */ 314 mulpd %xmm1, %xmm3 /* DP x^3*DP_SIN2_0+x^5*DP_SIN2_1 */ 315 addpd %xmm1, %xmm3 /* DP x+x^3*DP_SIN2_0+x^5*DP_SIN2_1 */ 316 cvtpd2ps %xmm3, %xmm0 /* SP results */ 317 movss %xmm0, (ARG_SIN_PTR) /* store sin(x) from xmm0[0] */ 318 shufps $1, %xmm0, %xmm0 /* move cos(x) to xmm0[0] */ 319 movss %xmm0, (ARG_COS_PTR) /* store cos(x) */ 320 ret 321 322 .p2align 4 323 L(arg_less_2pn27): 324 cmpl $0, %eax /* x=0 ? */ 325 je L(arg_zero) /* in case x=0 return sin(+-0)==+-0 */ 326 /* Here if |x|<2^-27 */ 327 /* 328 * Special cases here: 329 * sin(subnormal) raises inexact/underflow 330 * sin(min_normalized) raises inexact/underflow 331 * sin(normalized) raises inexact 332 * cos(here)=1-|x| (raising inexact) 333 */ 334 movaps %xmm0, %xmm3 /* DP x */ 335 mulsd L(DP_SMALL)(%rip), %xmm0/* DP x*DP_SMALL */ 336 subsd %xmm0, %xmm3 /* DP sin result is x-x*DP_SMALL */ 337 andps L(SP_ABS_MASK)(%rip), %xmm7/* SP |x| */ 338 cvtsd2ss %xmm3, %xmm0 /* sin(x) */ 339 movss L(SP_ONE)(%rip), %xmm1 /* SP 1.0 */ 340 movss %xmm0, (ARG_SIN_PTR) /* sin(x) store */ 341 subss %xmm7, %xmm1 /* cos(x) */ 342 movss %xmm1, (ARG_COS_PTR) /* cos(x) store */ 343 ret 344 345 .p2align 4 346 L(arg_zero): 347 movss L(SP_ONE)(%rip), %xmm0 /* 1.0 */ 348 movss %xmm7, (ARG_SIN_PTR) /* sin(+-0)==x */ 349 movss %xmm0, (ARG_COS_PTR) /* cos(+-0)==1 */ 350 ret 351 352 .p2align 4 353 L(arg_inf_or_nan): 354 /* Here if |x| is Inf or NAN */ 355 jne L(skip_errno_setting) /* in case of x is NaN */ 356 357 /* Align stack to 16 bytes. */ 358 subq $8, %rsp 359 cfi_adjust_cfa_offset (8) 360 /* Here if x is Inf. Set errno to EDOM. */ 361 call JUMPTARGET(__errno_location) 362 addq $8, %rsp 363 cfi_adjust_cfa_offset (-8) 364 365 movl $EDOM, (%rax) 366 367 .p2align 4 368 L(skip_errno_setting): 369 /* Here if |x| is Inf or NAN. Continued. */ 370 subss %xmm7, %xmm7 /* x-x, result is NaN */ 371 movss %xmm7, (ARG_SIN_PTR) 372 movss %xmm7, (ARG_COS_PTR) 373 ret 374 END(__sincosf) 375 376 .section .rodata, "a" 377 .p2align 3 378 L(PIO4J): /* Table of j*Pi/4, for j=0,1,..,10 */ 379 .long 0x00000000,0x00000000 380 .long 0x54442d18,0x3fe921fb 381 .long 0x54442d18,0x3ff921fb 382 .long 0x7f3321d2,0x4002d97c 383 .long 0x54442d18,0x400921fb 384 .long 0x2955385e,0x400f6a7a 385 .long 0x7f3321d2,0x4012d97c 386 .long 0xe9bba775,0x4015fdbb 387 .long 0x54442d18,0x401921fb 388 .long 0xbeccb2bb,0x401c463a 389 .long 0x2955385e,0x401f6a7a 390 .type L(PIO4J), @object 391 ASM_SIZE_DIRECTIVE(L(PIO4J)) 392 393 .p2align 3 394 L(_FPI): /* 4/Pi broken into sum of positive DP values */ 395 .long 0x00000000,0x00000000 396 .long 0x6c000000,0x3ff45f30 397 .long 0x2a000000,0x3e3c9c88 398 .long 0xa8000000,0x3c54fe13 399 .long 0xd0000000,0x3aaf47d4 400 .long 0x6c000000,0x38fbb81b 401 .long 0xe0000000,0x3714acc9 402 .long 0x7c000000,0x3560e410 403 .long 0x56000000,0x33bca2c7 404 .long 0xac000000,0x31fbd778 405 .long 0xe0000000,0x300b7246 406 .long 0xe8000000,0x2e5d2126 407 .long 0x48000000,0x2c970032 408 .long 0xe8000000,0x2ad77504 409 .long 0xe0000000,0x290921cf 410 .long 0xb0000000,0x274deb1c 411 .long 0xe0000000,0x25829a73 412 .long 0xbe000000,0x23fd1046 413 .long 0x10000000,0x2224baed 414 .long 0x8e000000,0x20709d33 415 .long 0x80000000,0x1e535a2f 416 .long 0x64000000,0x1cef904e 417 .long 0x30000000,0x1b0d6398 418 .long 0x24000000,0x1964ce7d 419 .long 0x16000000,0x17b908bf 420 .type L(_FPI), @object 421 ASM_SIZE_DIRECTIVE(L(_FPI)) 422 423 /* Coefficients of polynomials for */ 424 /* sin(x)~=x+x*x^2*(DP_SIN2_0+x^2*DP_SIN2_1) in low DP part, */ 425 /* cos(x)~=1+1*x^2*(DP_COS2_0+x^2*DP_COS2_1) in high DP part, */ 426 /* for |x|<2^-5. */ 427 .p2align 4 428 L(DP_SINCOS2_0): 429 .long 0x5543d49d,0xbfc55555 430 .long 0xff5cc6fd,0xbfdfffff 431 .type L(DP_SINCOS2_0), @object 432 ASM_SIZE_DIRECTIVE(L(DP_SINCOS2_0)) 433 434 .p2align 4 435 L(DP_SINCOS2_1): 436 .long 0x75cec8c5,0x3f8110f4 437 .long 0xb178dac5,0x3fa55514 438 .type L(DP_SINCOS2_1), @object 439 ASM_SIZE_DIRECTIVE(L(DP_SINCOS2_1)) 440 441 442 .p2align 3 443 L(DP_ZERONE): 444 .long 0x00000000,0x00000000 /* 0.0 */ 445 .long 0x00000000,0xbff00000 /* 1.0 */ 446 .type L(DP_ZERONE), @object 447 ASM_SIZE_DIRECTIVE(L(DP_ZERONE)) 448 449 .p2align 3 450 L(DP_ONES): 451 .long 0x00000000,0x3ff00000 /* +1.0 */ 452 .long 0x00000000,0xbff00000 /* -1.0 */ 453 .type L(DP_ONES), @object 454 ASM_SIZE_DIRECTIVE(L(DP_ONES)) 455 456 /* Coefficients of polynomials for */ 457 /* sin(t)~=t+t*t^2*(S0+t^2*(S1+t^2*(S2+t^2*(S3+t^2*S4)))) in low DP part, */ 458 /* cos(t)~=1+1*t^2*(C0+t^2*(C1+t^2*(C2+t^2*(C3+t^2*C4)))) in high DP part, */ 459 /* for |t|<Pi/4. */ 460 .p2align 4 461 L(DP_SC4): 462 .long 0x1674b58a,0xbe5a947e 463 .long 0xdd8844d7,0xbe923c97 464 .type L(DP_SC4), @object 465 ASM_SIZE_DIRECTIVE(L(DP_SC4)) 466 467 .p2align 4 468 L(DP_SC3): 469 .long 0x64e6b5b4,0x3ec71d72 470 .long 0x9ac43cc0,0x3efa00eb 471 .type L(DP_SC3), @object 472 ASM_SIZE_DIRECTIVE(L(DP_SC3)) 473 474 .p2align 4 475 L(DP_SC2): 476 .long 0x8b4bd1f9,0xbf2a019f 477 .long 0x348b6874,0xbf56c16b 478 .type L(DP_SC2), @object 479 ASM_SIZE_DIRECTIVE(L(DP_SC2)) 480 481 .p2align 4 482 L(DP_SC1): 483 .long 0x10c2688b,0x3f811111 484 .long 0x545c50c7,0x3fa55555 485 .type L(DP_SC1), @object 486 ASM_SIZE_DIRECTIVE(L(DP_SC1)) 487 488 .p2align 4 489 L(DP_SC0): 490 .long 0x55551cd9,0xbfc55555 491 .long 0xfffe98ae,0xbfdfffff 492 .type L(DP_SC0), @object 493 ASM_SIZE_DIRECTIVE(L(DP_SC0)) 494 495 .p2align 3 496 L(DP_SMALL): 497 .long 0x00000000,0x3cd00000 /* 2^(-50) */ 498 .type L(DP_SMALL), @object 499 ASM_SIZE_DIRECTIVE(L(DP_SMALL)) 500 501 .p2align 3 502 L(DP_PIO4): 503 .long 0x54442d18,0x3fe921fb /* Pi/4 */ 504 .type L(DP_PIO4), @object 505 ASM_SIZE_DIRECTIVE(L(DP_PIO4)) 506 507 .p2align 3 508 L(DP_2POW52): 509 .long 0x00000000,0x43300000 /* +2^52 */ 510 .long 0x00000000,0xc3300000 /* -2^52 */ 511 .type L(DP_2POW52), @object 512 ASM_SIZE_DIRECTIVE(L(DP_2POW52)) 513 514 .p2align 3 515 L(DP_INVPIO4): 516 .long 0x6dc9c883,0x3ff45f30 /* 4/Pi */ 517 .type L(DP_INVPIO4), @object 518 ASM_SIZE_DIRECTIVE(L(DP_INVPIO4)) 519 520 .p2align 3 521 L(DP_PIO4HI): 522 .long 0x54000000,0xbfe921fb /* High part of Pi/4 */ 523 .type L(DP_PIO4HI), @object 524 ASM_SIZE_DIRECTIVE(L(DP_PIO4HI)) 525 526 .p2align 3 527 L(DP_PIO4LO): 528 .long 0x11A62633,0xbe010b46 /* Low part of Pi/4 */ 529 .type L(DP_PIO4LO), @object 530 ASM_SIZE_DIRECTIVE(L(DP_PIO4LO)) 531 532 .p2align 2 533 L(SP_INVPIO4): 534 .long 0x3fa2f983 /* 4/Pi */ 535 .type L(SP_INVPIO4), @object 536 ASM_SIZE_DIRECTIVE(L(SP_INVPIO4)) 537 538 .p2align 4 539 L(DP_ABS_MASK): /* Mask for getting DP absolute value */ 540 .long 0xffffffff,0x7fffffff 541 .long 0xffffffff,0x7fffffff 542 .type L(DP_ABS_MASK), @object 543 ASM_SIZE_DIRECTIVE(L(DP_ABS_MASK)) 544 545 .p2align 3 546 L(DP_HI_MASK): /* Mask for getting high 21 bits of DP value */ 547 .long 0x00000000,0xffffffff 548 .type L(DP_HI_MASK), @object 549 ASM_SIZE_DIRECTIVE(L(DP_HI_MASK)) 550 551 .p2align 4 552 L(SP_ABS_MASK): /* Mask for getting SP absolute value */ 553 .long 0x7fffffff,0x7fffffff 554 .long 0x7fffffff,0x7fffffff 555 .type L(SP_ABS_MASK), @object 556 ASM_SIZE_DIRECTIVE(L(SP_ABS_MASK)) 557 558 .p2align 2 559 L(SP_ONE): 560 .long 0x3f800000 /* 1.0 */ 561 .type L(SP_ONE), @object 562 ASM_SIZE_DIRECTIVE(L(SP_ONE)) Фреймворки эти все, от лукавого. Короче, лучше юзать VS2010, оптимизацию делать вручную, векторы, выравнивания и т.д. NanoBot-AMK, фреймворки эти все для упрощения жизни и более скорого получения результата. Оптимизацию конечно лучше делать вручную, а ещё лучше делать её только там, где это действительно необходимо. Зачастую достаточно только высокоуровневой оптимизации. И то, чего добьюсь я, просто правильно написав код за ~час, ты будешь тыркать на асме пару дней и скорее всего это получится очень платформозависимое решение, но зато быстрее на 10 000 сферических тактов в вакууме, которые далее полностью нивелируются обращением к памяти, т.к. ты инструкции не в самом оптимальном порядке поставил )) А на другой платформе вообще будет работать медленнее или не работать вовсе и тогда я меняю платформу в настройках компилятора, а ты вновь погружаешься на X часов в асм ) Оптимизация должна быть оправданной и всего должно быть в меру, удачи Сообщение отредактировал Neo][ - 28.03.2018, 08:11 -------------------- |
 
|
|
28.03.2018, 11:00
Сообщение
#61
|
|
Опытный Геймер Репутация: 17 Группа: Участник Сообщений: 161 Награды: 3 Регистрация: 08.03.2015 |
Что то OpenGL не хочет работать. Полный лог вылета заливаю в гугл диск в архиве.
Стоит Windows 10 x64 Home В конце написано вот это: CODE
-------------------- |
 
|
|
Текстовая версия | Сейчас: 19.04.2024, 06:03 |