Разве так сложно портировать приложение на 64 бита? - PullRequest
2 голосов
/ 02 сентября 2010

Я с удивлением прочитал, что Adobe прекратила выпуск 64-битной версии Flash для Linux . Хотя существует новая 32-битная версия, и Adobe советует пользователям использовать 32-битную версию Firefox.

Интересно, поскольку мне еще не приходилось это делать, трудно портировать приложение на 64 бита? Помимо изменений в библиотеках и перекомпиляции (настройки в Makefile), что делает порт трудным? (Пример Flash)

Ответы [ 6 ]

7 голосов
/ 02 сентября 2010

Как отмечалось в сообщении в блоге Adobe , движок FlashScript от ActionScript имеет JIT-компилятор, который компилирует код ActionScript в собственный код.* набор инструкций от x86.Поэтому заставить JIT-компилятор генерировать код x64 - нетривиальная задача, и она намного сложнее, чем просто сделать все слова 64-битными.: -)

2 голосов
/ 02 сентября 2010

Настоящим преимуществом переноса приложений на 64-битную версию является то, что каждая ОС, по-видимому, обрабатывает примитивные типы по своему усмотрению.Например, в большинстве сред linux long составляет 4 байта в 32-битной системе и 8 байтов в 64-битной системе (32 бит = 4 байта, 64 бит = 8 байтов). Между тем, int остается 4 байта в 64-битной и 32-битной системах.системы.Под окнами, кажется, верно обратное: long остается последовательно 4 байта, в то время как int переключается между 32 и 64 битами.

Тем не менее, я портировал работающий проект среднего размера до 32-битной и 64-битной Linux (около 25 000 строк кода) только для того, чтобы внести изменения в ассемблерный код (GASM), что сделало несколько неисправныхпредположения о том, что типы данных имеют длину 4 байта.Кроме этого, у меня не было проблем, что говорит о том, что при строгом внимании к типам данных, когда вы впервые разрабатывали, портирование должно быть безразличным, возможно, требующим лишь изменения определенных параметров компиляции (например, -fpic). Было несколькодействительно странные случаи, которые возникли в моем опыте портирования, но я думаю, что они были в основном из-за неопределенного поведения некоторых GASM больше, чем само портирование.

1 голос
/ 02 сентября 2010

Я предполагаю, что очевидными проблемами будут переменные размеры (например, long - 64 бита на большинстве 64-битных компиляторов), это портит все, что использует операции, связанные с размером, такие как сдвиг битов / некоторая арифметика указателей. Я думаю, что Adobe просто не может быть обеспокоен сканированием и обеспечением перекрестной совместимости. Особенно, когда более 90% браузеров используют 32-битные версии, я знаю, что flash никогда не работал на 64-битном IE, но даже 64-битная Windows 7 по умолчанию установлена ​​на 32-битную версию.

Много информации об этом здесь, если вы заинтересованы:

http://www.viva64.com/content/articles/64-bit-development/?f=20_issues_of_porting_C++_code_on_the_64-bit_platform.html&lang=en&content=64-bit-development

1 голос
/ 02 сентября 2010

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

В частности,

для флеш-памяти на linux, скорее всего, это вопрос экономии. угождает ли процент пользователей, использующих Linux и 64bit, затраты на разработку для Adobe? вероятно, нет, на данный момент.

1 голос
/ 02 сентября 2010

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

1 голос
/ 02 сентября 2010

Если вы используете много целых чисел и чисел с плавающей запятой, может быть удивительно сложно заставить его работать должным образом, особенно.если это сетевое приложение.

Потребовалось более 2 лет для переноса xMule на 64 бита, и я не верю, что его родительский проект eMule вообще имеет 64 бита.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...