Войти
ФлеймФорумПроЭкты

Нуб вкатывается в Ассемблер ! (3 стр)

Страницы: 1 2 3 4 511 Следующая »
#30
11:44, 12 мая 2017

раб вакуумной лампы
> За сколько месяцев можно написать игру уровня Prince of Persia на современном
> Асме

Про Prince of Persia не знаю, а Frontier Бребен в одиночку несколько лет делал. Лучше поизучай движки


#31
11:49, 12 мая 2017

Сцуко, граблестроители ИТТ.

Поясняю по хардкору.
1) Программирование голыми руками на асме x86 в наше время - необосновано.
Компилятор лучше программиста может разбросать переменные по регистрам в -O3 режиме компиляции. Какой прок каждый раз руками загонять инфу в стек для передачи параметров в функцию, которая вызывает по соглашению stdcall или cdecl и затем руками выравнивать стек обратно?
Писать все это самому - это сравни мастурбации: результат есть, но удовольствие и качество ниже

2) Руками процессорные инструкции следует писать только в случае SIMD.
Компилятор, какой бы он умный не был, не способен оптимально раскидать математику на векторные инструкции. Потому что единого алгоритма для раскидывания в этом случае - нету. Это творчество.
И именно здесь обосновано писать на ассемблере. Особенно, когда неправильная последовательность векторных инструкций приводит к stall циклам процессора, например при read after write

3) Опять же SIMD
Если хочется совсем хадкора - возьмите какую-нибудь отладочную плату от Texas Instruments с DSP процессором на борту и попробуйте написать движок на векторных инструкциях с fixed point математикой. Вот тут будет вам раздолье для творчества.

У меня все.

#32
11:52, 12 мая 2017

gudleifr
> Только у непрограммистов.
Вы когда-нибудь дебажили кусок ассемблера?
Элементарно, тот же самый код, который был в три-четыре строчки, занимает несколько страниц на экране - просто на "промотку" уже уходит раза в два-три больше времени.
Не говоря уже про то, когда нужно другому человеку понять Ваш код (вот сейчас просмотрел свою старую игрушку 50% на ассемблере, нифига не понял, часа 2-3 понадобится, чтобы просто вспомнить что и зачем я там пытался делать).
gudleifr
> Это тоже байка непрограммистов.
Вы когда-нибудь читали дизассемблер? Например, в целях кряка игры? Или попытке выловить SIGSEGV за пределами Вашего кода? Или когда Вы делаете низкоуровневые оптимизации средствами высокоуровневого языка? :)
Например, как Вы представляете оптимизацию этого выражения без использования дизассемблера?

Result := LongWord((int64(seed)*N) shr 32)
Да, это сложно. Но не невозможно. Да, это редко, за всю мою жизнь "помогло" мне, с натяжкой, раза 3-4. Зато про вооот такууую рыбу байки и следует рассказывать.

Я не "мню" себя экспертом по ассемблеру, мой опыт (особенно, опыт современного ассемблера) весьма невелик. Но не так уж мало я и своими руками делал, по этому описываю не байки (в отличии), а то, с чем сам столкнулся за свои более 25 лет программирования (не обольщайтесь - 25 лет скорее баловства, чем профессиональной работы, но всё равно что-то да и увидел из практики).

Rikk
> вы все противоречите друг другу.
Если Ктулху зохавает фсех, то зохавает ли он сам себя?

Rikk
> есть основания сомневаться и в этом
Практические?
У меня была реальная ситуация, когда код работал на линуксе и на виноузе. А потом после апгрейда линукса (хотя, я так и не понял конкретную причину), вдруг перестал запускаться (точнее, вообще даже компилироваться) на линуксе, но продолжал работать нормально на виндоузе. Буквально пол года назад. Забил на +5% (не помню точно, лень искать результаты тестов, может до +25%) скорости и оставил высокоуровневую функцию, оптимизированную с помощью дизассемблера - она "тормозила" буквально по одному регистру.
#33
11:54, 12 мая 2017

Deamon
> возьмите какую-нибудь отладочную плату от Texas Instruments с DSP процессором на борту и попробуйте написать движок на векторных инструкциях с fixed point математикой
нет уж, более обосновано делать игру на MASM под DOS, чем движок для отладочной платы.

#34
12:09, 12 мая 2017

Кстати с многотыщными листингами можно быстро заработать болезнь пальцевых суставов :)  навигация по этому коду дебильная.
А когда засидишся,  тот же си или паскаль еще понимаешь,  а ассемблер,  написанный тобой часом ранее -  упорно превращается в стену исписанную древним санскритом.

#35
12:33, 12 мая 2017

eugeneloza
> Практические?

практически . компьютеры работают на процессорах интел и амд - два штука процессора . +2штука процессоров для смартфонов.=4штука. при этом вполне возможно что процессор ЧЧЧ использует система команд стандартного. то есть написанное для ЧЧЧ и для стандартного—одно и то же. еще существуют кроссассемблеры когда асм1 переводит в систему асм2 и там остается copy-paste оттранслировать в систему2.

#36
12:33, 12 мая 2017

eugeneloza
> Заодно и дебаговый дизассемблер можно будет куда эффективнее читать.
а зачем читать дебаг выхлоп?

#37
12:38, 12 мая 2017

Deamon
> Сцуко, граблестроители ИТТ.
Deamon
> Программирование голыми руками на асме x86 в наше время - необосновано.

а почему вы именно конкретно указали х86 . речь они ведут про ассемблер вообще а не про именно х86

Deamon
> Компилятор лучше программиста может разбросать переменные по регистрам в -O3
> режиме компиляции
Deamon
> Компилятор, какой бы он умный не был, не способен оптимально раскидать
> математику на векторные инструкции.

вы противоречите сам себе . таки всё таки лучше компилятор или лучше оптимально раскидать?

#38
12:47, 12 мая 2017

Rikk
1) x86, потому что MASM
2) Никакого противоречия.
Если человек пишет на обычных инструкциях для обычного процессора - обогнать компилятор у него шансов нет.
Если человек пишет на векторных инструкциях или для VLIW процессора - человек может очень существенно обогнать компилятор. Происходит это из-за особенностей архитектуры, ограничений на исполнения инструкций и stall циклов процессора.

#39
12:52, 12 мая 2017

Rikk
> а почему вы именно конкретно указали х86 . речь они ведут про ассемблер вообще а не про именно х86
masm - это ассемблер для x86 и ни для чего другого.

Далеко не просто написать вручную эффективнее, чем генерируют компиляторы с языков высокого уровня. Профессионал программист тоже не всегда напишет эффективнее, просто потому что оптимизация не везде нужна, а усилий требует.

раб вакуумной лампы
Интересно, кому сейчас мог понадобиться DOS... В каком музее собрались искать машинки для его запуска?

#40
12:58, 12 мая 2017

раб вакуумной лампы
Писал давно по учебе - за месяц по вечерам справился. Если грамотно подойти к делу то сложность программы не намного уступает Cи.

#41
12:58, 12 мая 2017

Deamon
> Сцуко, граблестроители ИТТ.

Deamon
> Если человек пишет на обычных инструкциях для обычного процессора - обогнать
> компилятор у него шансов нет.

если вы пишете и высшим языком типа python - компилятор вы тоже не обгоните.

#42
13:20, 12 мая 2017

Rikk
Разговор был не про интерпретируемые языки и не про языки со сборщиком мусора.
Разговор был про старый махровый native

#43
13:24, 12 мая 2017

Deamon
> Разговор был

Deamon
> Если человек пишет на обычных инструкциях для обычного процессора - обогнать
> компилятор у него шансов нет.

компилятор что пишет ?

Deamon
> Разговор был про старый махровый native
асм это не native

вы нубы что ли ,которые скатились?

#44
13:29, 12 мая 2017

Rikk
А что,  асм это управляемый код?)

Страницы: 1 2 3 4 511 Следующая »
ФлеймФорумПроЭкты

Тема в архиве.