122
push ptrParams //в стёк даётся 4 байта. адрес ptrParams call class_name::func_name //функция берет из стёка адрес ptrParams и читает со смещением, в зависимости от номера аргумента. //data ptrParams dd 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,...,80 //я думаю на с++ никто нормальный через 80 push(стёк) не будет передовать 80 параметров функции. Ухаха.
Уверен что асм тебе не даст НИ-ЧЕ-ГО.
Да,да. И поэтому решили сделать simd sse\avx.
Ну просто напихать в проц асм команд, которые ничего не дают.

Да даже всратый python ссыт кипятком от скорости sse\avx и переписывает ядро под них.
Патамушта sse\avx ничего не даёт.
ronniko
> ptrParams dd
Ой, да пожалуйста,...
ptr->func_name(foo1( ), foo2( ), foo3( ), foo4( ), foo5( ), foo6( foo7), foo8( foo9), foo10( foo11), foo12( foo13), foo14( foo15));
один овощь, всё равно залолбаешься свой DD-ятник инициализировать
0iStalker
Ты это.
Не оправдывай с++ :)
всё равно залолбаешься свой DD-ятник инициализировать
а ptrParams может динамически менятся прогой! во время работы. что даёт гибкость и подстройку логики функций, от тех или иных результатов в ptrParams.
ronniko
> Уверен что асм тебе не даст НИ-ЧЕ-ГО.
> Да,да.
Ну ведь да.
Ведь да.
Вон в конкурсе кубов, демки до сих пор скачать можно (ссылка на прошлой странице). Напиши на асме рендер кубов, сравни с конкурсными. Ничего тебе асм по скорости не даст.
ronniko
> ptrParams dd
Ну вот о чём я говорю: имён переменных НЕТ, сразу код непригоден для изменения в будущем.
Ограничения на чтение памяти стека НЕТ, то есть простор для ошибок.
Ты же понимаешь, ну, БАЗУ. Она в том что хороший код это код, который легко читать и легко изменять в будущем.
> а ptrParams может динамически менятся прогой!
Это минус. Поменяешь где-то в коде, забудешь. Через неск лет потребуется функцию поменять, и вот он баг. Вот я пишу софтрендер с 16 года, и часто сталкиваюсь с ситуацией глубокого редактирования кода 5-8 летней давности. Как бы я менял взятие значений руками из стека, хз. У тебя код малопригодный для изменения\развития.
> ссыт кипятком от скорости sse\avx
В нормальном мире компилятор автоматически должен компилить с использованием авх.
Ну то есть сами инструкции хорошие, тут проблем нет.
122
Ну то есть сами инструкции sse\avx хорошие, тут проблем нет.
Ты или штаны надень или крестик сними.
То асм у тебя ничего не даёт, то sse\avx асм инструкции хорошие и дают выигрыш.
Создаётся ощущение, что пишут два разных человека.
ronniko
> avx [] инструкции хорошие и дают выигрыш
Да.
> асм у тебя ничего не даёт
Ну да.
Асм юзает авх, компилятор юзает авх. Тут равенство.
Но компилятор позволяет совершенствовать и развивать код за счёт УДОБСТВА. Поэтому в случае большой программы, в долгосроке, компилятор однозначно побеждает.
Компилятор ничего не стоит без асм инструкций (вот она БАЗА). Как ты этого не можешь понять ? Ты же код пишеш елы-палы.
Я сделаю тебе проц у которого будет всего одна инструкция mov eax,число.
Много твой компилятор сможет сделать на таком проце ?
Уверен что асм тебе не даст НИ-ЧЕ-ГО.
А теперь подумай ещё раз.
И ты поймёшь, что процессор с одной асм инструкцией и даже с пятью не пригоден для написания сложных программ.
ronniko
> Я сделаю тебе проц
А мы же сравниваем в рамках одного проца, то есть архитектуры х86-64.
Не надо вводить какие-то выдуманные процы.
Вот есть х86-64.
На ней есть асм где ты руками пишешь. И есть с++, где адекватный уровень абстракции.
И я утверждаю что в долгосроке на больших проектах с++ победит по скорости. За счёт удобства понимания и изменения кода. А твой асм может победить ТОЛЬКО в условии крохотной программы, например код перебора паролей уместно писать на асме. А вот уже даже несложную задачу растеризации треугольников - всё, с++ победит потому что удобство.
Так что асм для программ, которые пишутся дольше пары дней - даст проигрыш в итоге по качествам результата.
Не надо вводить какие-то выдуманные процы.
ты смысл этой темы понял и о чем она ?
А вот уже даже несложную задачу растеризации треугольников - всё, с++ победит потому что удобство.
Да удобство, но не гарантия что будет быстро работать, чем на асме.
За удобство и надежду на компилятор, расплата скорость работы программы,скорость компиляции не шустрая и установка всяких visual studio и includes\lib что на 5 гиг затянет.
По факту ты без visual studio и includes\lib ничего не можешь сделать.
Ты как инвалид прикован к с++ и visual studio.
Загнется с++ и visual studio и появится новый язык программирования.
Скажет Микрософт будем Rust развивать и под него весь софт и айпи писать.
И всё ты пролетел со своим с++, когда выйдет какой-то directx 14.
Пока есть х86 проц , жив и ассемблер.
Потому что х86 проц работает только с асм инструкциями и точка.
ronniko
> Да удобство, но не гарантия что будет быстро работать
Гарантия.
Удобство развития кода означает, что ты его сможешь улучшить и развить.
> расплата скорость работы программы
А ты вообще хоть раз СРАВНИВАЛ?
Ну, свой код и код чела с опытом с++?
Эта теория, что на асме быстрее, это скорее миф и пара крайне редких случаев как уже упомянутый перебор паролей. А вообще, ОБЫЧНО, с++ быстрее асма. В том числе и потому что компилятор знает лучше как сделать быстрее.
Короче, проверь.
Удивишься проигрышу асма.
А вообще, ОБЫЧНО, с++ быстрее асма.
Да слышал я много раз эту сказку про бабушку с яйцами :)
Короче, проверь.
Удивишься проигрышу асма.
Ты в курсе, что с++ код в асм инструкции переводится.
Проверь удивишься:)
ronniko
> По факту ты без [] includes\lib ничего не можешь сделать.
Ложно, я не юзаю std lib, math и подобные.
> Ты как инвалид прикован к [] visual studio.
Ложно, мой движок собирается на борланде, оупенваткоме, кланге, жсс, студиях, на компиляторе интела когда он ещё был. То есть как минимум на 6.
ronniko
> Да слышал я много раз
Но ни разу не проверял?
Так в сказку и поверил, да?
На асме никто не пишет не просто так. А потому что асм даёт худший результат. Сильно худший.
Задай себе вопрос, почему никто не юзает асм сегодня.
мой движок собирается на борланде
уж лучше на fasme писать.
Теперь понятно почему ты пишешь софтрендер.
Ты не юзаешь либы, math и visual studio.
Понятно почему ты не можешь писать на vulkan api, directx 12\11
ronniko
> с++ код в асм инструкции переводится
Блин вот же ты не умеешь увидеть суть.
Да пофиг на инструкции. Суть вот:
> компилятор позволяет совершенствовать и развивать код за счёт УДОБСТВА. Поэтому в случае большой программы, в долгосроке, компилятор однозначно побеждает.
Скорость программы == твоё удобство развивать эту программу.
И в случае большого проекта у асма нет шансов на удобство. Асм удобен и уместен только для крохотных задач.