Как мы помним с детства, исходники квейков пестрят функциями LittleLong и LittleShort, оставшиеся в наследство от стремления Кармака запускать кваку на своём личном маке с PowerPC, являвшимся процессором big-endian архитектуры. Поэтому и написан код, способный компилироваться раздельно в разные эндианы, а иногда даже детектировать endianness в рантайме.
Но в последнее десятилетие произошли серьёзные события:
MacOS X начала работать с процессорами little-endian, а последняя версия вообще работает только на интелах - то есть PowerPC нафиг сдох, как кокаин из известного фильма Тарантино.
Телефоны на процессорах ARM работают в little-endian режиме, за исключением совсем уж древних, где небось даже злых птичек не запустишь. Т.е. процессор ARM не только умеет работать в обеих endianness, но ещё и little по умолчанию. И всё больше телефонов оснащаются процессорами Intel.
Отсюда возникает закономерный вопрос: а существуют ли сейчас распространённые десктопные решения на основе big endian? Или хотя бы сервера, где можно вешать дедикейтед? Экзотика типа "у моей бабушки нашёлся PowerPC, и я сам поднял на нём свой сервак" не в счёт.
Проголосовавших за "Да" милости просим отметиться в теме, приведя соответствующие аргументы.
UPD: речь только об архитектуре процессора! Про сетевой код вспоминать не нужно.
Задумываюсь, но не в контексте архитектуры, а в контексте TCP/IP, ибо там как раз порядок байтов иной.
На практике машины с big endian не встречал, но он может быть на HP-UX и Solaris (SPARC).
FreeSlave писал: не в контексте архитектуры, а в контексте TCP/IP
Речь исключительно об архитектуре.
Т.е. когда ты грузишь бсп-файл, а он бац - и не грузится. Потому что создан в литтл-эндиане, а у тебя биг, и надо его перекодировать сначала.
Поправил пост и название опроса.
Добавлено 14-01-2014 в 18:00:
Цитата:
FreeSlave писал: он может быть на HP-UX и Solaris (SPARC)
Ну кваку на них люди запускают, играют? Или только крузис таки серверная экзотика?
Я понимаю, что есть. Полтора землекопа есть на каждой системе. Речь о полноценной аудитории геймеров. Традиционно такими аудиториями считаются пользователи Windows, Linux, MacOX, и вот теперь iOS и Android. Я к тому, что отныне они все вроде как little-endian, и про LittleLong можно смело забыть, как мы забыли про обязательное выравнивание?
XaeroX, линуксы и на архитектуры с big-endian есть, но игроков там те же полтора землекопа.
Я думаю, если возникнет внезапная потребность в поддержке big-endian, то написать в нужных местах fromLittleEndian и toLittleEndian будет несложно.
thambs
Гугли просто "выравнивание", там можно найти статьи, где описывается, что на старых PPC доступ к невыровненным данным возбуждал исключение.
Да вот хотя бы: http://www.ibm.com/developerworks/library/pa-dalign/
Добавлено 14-01-2014 в 19:25:
Цитата:
FreeSlave писал: написать в нужных местах fromLittleEndian и toLittleEndian будет несложно.
Не скажи, эти места ещё отыскать надо будет, да по всему проекту.
Я для записи в файл и чтения из него обычно использую таблицы, наподобие тех, что используются сейврестором в халфе. В этих таблицах указано, какие поля должны сохраняться в файл, и таки да, там есть возможность конверсии из LE в BE и обратно.
Все это делается автоматически, поэтому совершенно не мешает и не напрягает. А раз оно не мешает, то пусть будет на всякий случай - примерно так я рассуждал.
XaeroX
Процы-то сами по себе умеют, а вот SDK для консолей с Little-endian не дружат, и ресурсы консольных игр все записаны в Big-endian. Насколько я знаю, проц в PS3 переключаться в другую эндиану совсем не умеет.