Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Помощь новичку в программировании под дрим.
Автор Сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7133
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 136
Поблагодарили 1171 раз(а) в 729 сообщ.
Сообщение: #29
RE: Помощь новичку в программировании под дрим.
Ух, наконец интересный холивар Smile))
Вставлю и я свое слово по поводу компиляторов.

Да, последние версии на SH4 к сожалению корявые, особенно те что пошли после 5.2. Но я думаю это лишь потому, что на эти процессоры уже все забили по большому счету.
А вот по поводу производительности и оптимизации я не согласен с megavolt85.
Мне кажется что судить по читабельности ассемблера после компилятора неверно, просто потому, что современные компиляторы так хитро расставляют инструкции, чтобы полноценно использовать суперскалярность и кэш. Да, читать такой асм код вообще невозможно порой, но это и не нужно разработчику в большинстве случаев. Этот код читает процессор, а ему хорошо когда инструкции расположены особым образом и этот особый образ совсем не подходит для чтения человеком, для него это абракадарба.
Старые компиляторы вообще ничего не оптимизировали, они практически прямолинейно транслировали Си код в ассемблер и только поэтому читать такой асм легко человеку, потому что он выглядит почти как Си код, который и писал человек.
Я лично пробовал писать асм от руки с учетом суперскалярности и прочих хитростей процессора и поверьте мне, код этот абсолютно не читаем становится с логической точки зрения, его и писать сложно и уж тем более читать тому, кто его первый раз увидел.

А вот производительность такого кода значительно больше. Я не просто так пытался использовать самые новые компиляторы, с каждой новой версией код становился все меньше и быстрее. Но к сожалению в какой-то момент они что-то сломали в поддержке SH4 так сильно, что все эти новшества были убиты багами. Так что позже версии 5.2, компиляторы использовать стало просто невозможно, хотя код там получался еще меньше и еще быстрее.

Выравнивание же под 32 байта в коде нужно для кэша, так как одна линия кэша (обоих типов) равна 32 байтам. И заполнять ее меньше нет никакого смысла, даже если записать туда 8 байт, использоваться будет 32 и в кэше поиск будет осуществляться по адресу начала этих 32 байт.
Да это немного откусывает оперативки, но если тебе важнее она, то собирай с другими оптимизациями, благо их 4 уровня + есть возможность включать и выключать что не нужно доп. флагами.
Если код не сильно громоздкий и не требует уместиться в микроразмер, то такой подход с выравниванием себя оправдывает, потому как оптимальная работа с кэшем значительно повышает производительность всего кода в целом, потому что оперативка очень медленная по сравнению с кэшем процессора. И чем меньше процессор в нее ходит, тем больше есть у него свободного времени на выполнение инструкций, вместо ожидания памяти. Тут главное нужно понимать - процессор значительно быстрее памяти, чем меньше обращений к памяти, тем быстрее работает код. Поэтому читать и писать в память нужно максимальными блоками, которые позволяет шина. А прежде чем работать с блоком данных и/или инструкций, его нужно предварительно поместить в кэш.

Ну и немного о легальности.
Конечно глупо сейчас заявлять что KOS была написана только реверсинжинирингом. Это не правда. Реверс там безусловно есть, но не все на нем основано.
Базовая информация для ядра (а точнее зачаток этого ядра) была взята с сайта Marcus Comstedt, который в свою очередь эту инфу явно где-то раздобыл, мне кажется у него был доступ к материалам о создании консоли, по крайне мере о железе. Скорее всего у него есть друг который к этому был причастен. Явно не он сам причастен, иначе он бы молчал в тряпочку из за подписанных соглашений. Да и Marcus не дурак, открыто не выкладывал всю инфу, оформил кое-что как свое исследование и не выложил ничего критически важного. Так же этот-же друг дал полную инфу и для Rand Linden (или Marcus ему дал), который создал эмулятор Bleem!, без этой инфы создание эмулятора такого уровня в те года было просто невозможным, потому как в отрытом доступе ничего кроме корявый поделок и обрывков инфы небыло. Даже SDK не помогли бы, потому как там нет исходников, а на реверс нужно огромное количество времени. Я не хочу уменьшить тем самым гениальность автора, ни в коем случае, он при любом раскладе крутой.
Плюс ко всему, я могу сходу тыкнуть носом того-же Lawrence Sebald (aka BlueCrab) в то, что он сам подглядывал инфу в официальных источниках (как пример драйвер G1-ATA), а так же он сам ковырял всякие PSO и делал для них патчеры/загрузчики... Айайай пират.
В общем конечно странно наблюдать весь этот легальный буллщит. Консоль и ее технологии уже на столько устарели, что это по сути никому не нужно уже кроме этих же фанатов, которые еще зачем-то кривятся лицом. Тут в пору уже всю эту инфу на памятнике гравировать, а они все пыхтят и боятся что их Sega прижмет.

[Изображение: barbers.png]
(Последний раз сообщение было отредактировано 12.01.2020 в 09:54, отредактировал пользователь SWAT.)
12.01.2020 09:38
Вебсайт Найти все сообщения Цитировать это сообщение
Создать ответ 


Сообщения в этой теме
RE: Помощь новичку в программировании под дрим. - SWAT - 12.01.2020 09:38

Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  Нужна помощь с DCWinCE serial windbg debugger Ivan Guber 10 12409 02.07.2022 19:08
Посл. сообщение: Ivan Guber
  Нужна помощь с VFS в kallistiOS TeMaToS 10 16538 17.06.2019 09:01
Посл. сообщение: SWAT
  помощь чайнику cybdyn 119 230471 11.06.2019 12:56
Посл. сообщение: SavitarSvit
Лампочка 50герц в 60,нужна помощь corn.korn 6 20120 15.03.2018 12:55
Посл. сообщение: SWAT
  Требуется помощь знатоков!-русификация и подгонка текста под перерисованный шрифт вадим 14 41742 05.01.2011 00:44
Посл. сообщение: вадим
  Нужна помощь по ассемблеру SH4 SunDragon 25 65697 29.05.2010 18:45
Посл. сообщение: Freedom
  Помогите новичку demon01 91 273753 20.03.2009 22:39
Посл. сообщение: Guest
  Открылся новый сайт по программингу на дрим SWAT 9 26159 25.09.2008 23:10
Посл. сообщение: Василий

Переход:


Пользователи просматривают эту тему: 1 Гость(ей)