Прибивание программы гвоздями к...

Здесь можно поговорить о чём угодно и сколько угодно.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Прибивание программы гвоздями к...

Сообщение ArkanJR »

Каким образом программное обеспечение прибивается гвоздями к операционной системе и/или компьютерной архитектуре так, что через некоторое время проще написать эмулятор для запуска данного ПО, чем переписывать его под другую ОС и/или железо?
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3665
ОС: Mandriva => Gentoo (~amd64)
Контактная информация:

Re: Прибивание программы гвоздями к...

Сообщение devilr »

Можно проверять 100500 параметров данной ОС/железа, причем делать это 100500 разными функциями. Можно также использовать 100500 антиотладочных способов, причем все также веером раскидать по коду. Навернуть 100500 слоев высокоуровневых абстракций...
А насчет переписывания - если исходного кода нет, то чаще всего именно проще (и дешевле) написать эмулятор. Кстати, даже если он есть - можно писать код так, что стоимость его изменения/доработки многократно превысит написание его с нуля. И это не обязательно может быть говнокод :)
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Прибивание программы гвоздями к...

Сообщение Bizdelnick »

К ОС — очень просто: достаточно использовать специфичные для неё API или библиотеки. Например WinAPI, нестандартные расширения GNU libc, системные вызовы и т. п.
К архитектуре — чуть сложнее, есть два варианта. Первый — полнейшая безграмотность разработчиков, которые исходят из допущений, верных только для одной архитектуры (например о типах данных: ширина int, размер указателя, знаковость char и всё такое; также могут полагаться на какой-то вариант не определённого стандартом языка поведения). Второй — привязанные к архитектуре оптимизации (ассемблерные вставки, SIMD), сделанные без сохранения переносимой реализации.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Re: Прибивание программы гвоздями к...

Сообщение ArkanJR »

Bizdelnick писал(а):
05.11.2017 21:13
К ОС — очень просто: достаточно использовать специфичные для неё API или библиотеки. Например WinAPI, нестандартные расширения GNU libc, системные вызовы и т. п.

Типа

Код: Выделить всё

system("clear");
?
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Прибивание программы гвоздями к...

Сообщение NickLion »

Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Прибивание программы гвоздями к...

Сообщение s.xbatob »

NickLion писал(а):
06.11.2017 17:24
ArkanJR
man syscall
https://en.wikipedia.org/wiki/System_call

Это как раз давным-давно обратно совместимо. Так же, как и API libc.
Вот версии других разделяемых библиотек вполне могут повлиять.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Прибивание программы гвоздями к...

Сообщение NickLion »

s.xbatob
Вопрос был не про "обратную" совместимость, а между разными ОС и архитектурами. Вы правда считаете, что syscall написанный для Linux заработает на FreeBSD? Я даже про Linux x86_64 и Linux ARM не был бы уверен.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Прибивание программы гвоздями к...

Сообщение Bizdelnick »

NickLion писал(а):
08.11.2017 15:57
Вы правда считаете, что syscall написанный для Linux заработает на FreeBSD?

Ну вообще в FreeBSD для этого есть прослойка-эмулятор, так что данный конкретный пример не самый удачный.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Прибивание программы гвоздями к...

Сообщение NickLion »

Bizdelnick
Заработает любой syscall написанный для Linux? Не ожидал.
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Прибивание программы гвоздями к...

Сообщение s.xbatob »

NickLion писал(а):
08.11.2017 15:57
s.xbatob
Вопрос был не про "обратную" совместимость, а между разными ОС и архитектурами. Вы правда считаете, что syscall написанный для Linux заработает на FreeBSD? Я даже про Linux x86_64 и Linux ARM не был бы уверен.

Двоичный код для X86 на ARM, понятное дело, не заработает. Но программа, пересобранная из одних и тех же исходных текстов, скорее всего заработает.
Спасибо сказали:
yoshakar
Сообщения: 259
ОС: Debian Stretch

Re: Прибивание программы гвоздями к...

Сообщение yoshakar »

s.xbatob писал(а):
08.11.2017 17:42
Но программа, пересобранная из одних и тех же исходных текстов, скорее всего заработает.
Ну попробуйте, для примера, взять текст программы mount из FreeBSD (он, кстати, очень маленький и простой) и скомпилировать и запустить в Linux.
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Прибивание программы гвоздями к...

Сообщение s.xbatob »

yoshakar писал(а):
08.11.2017 18:54
s.xbatob писал(а):
08.11.2017 17:42
Но программа, пересобранная из одних и тех же исходных текстов, скорее всего заработает.
Ну попробуйте, для примера, взять текст программы mount из FreeBSD (он, кстати, очень маленький и простой) и скомпилировать и запустить в Linux.

Стоп!
Я, наверное, могу даже и пристроить -- потому что я начал работать с UNIXами в те времена, когда не то чтобы sysv, так и pc ещё не было. На машинах, совместимых с pdp-11. Но не хочу.
И вообще, держался бы я за старое, так до сих пор работал бы на логарифмической линейке или на арифмометре.
Ну ладно, всё это беллетристика. А совместимости не будет, и бороться за неё - это путь в никуда, к тому же арифмометру. Такая же у нас профессия: как только ты стал в своей области гуру, так это уже никому не интересно. Приходится следить за новым это всё изучать как дураку.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Прибивание программы гвоздями к...

Сообщение NickLion »

s.xbatob
Опять вы за "старое". Вопрос не в старом или обратной совместимости, а в том как написать программу, которую сложно переписать под другую ОС или архитектуру. Сейчас это в основном Windows, OS X, Linux, FreeBSD и IA32, AMD64, ARM, ARM Thumb(2), AArch64.

Например, как Total Commander, прибитый гвоздями к WinAPI.
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Прибивание программы гвоздями к...

Сообщение s.xbatob »

NickLion можно написать что угодно. И мои молодые коллеги периодически такое сотворить пытаются. Только за такой стиль надо руки отрывать!
Собственно, и отрывать не надо. Они потом на поддержке своего кода сами мучаются.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Прибивание программы гвоздями к...

Сообщение Bizdelnick »

s.xbatob писал(а):
10.11.2017 11:20
Только за такой стиль надо руки отрывать!

Ну так исходный вопрос и был про то, за что надо руки отрывать.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
yoshakar
Сообщения: 259
ОС: Debian Stretch

Re: Прибивание программы гвоздями к...

Сообщение yoshakar »

Bizdelnick писал(а):
10.11.2017 12:18
Ну так исходный вопрос и был про то, за что надо руки отрывать.
Эм, вы хотите оторвать руки разработчикам Total Commander? Тогда я категорически против. Приложения за редким исключением сами собой кросплатформенными не получаются, их надо специально такими делать, и поэтому если задача сделать приложение кросплатформенным не ставилась, то некроссплатформенность результата — это абсолютно нормально.
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Re: Прибивание программы гвоздями к...

Сообщение ArkanJR »

Bizdelnick писал(а):
10.11.2017 12:18
Ну так исходный вопрос и был про то, за что надо руки отрывать.

Я бы не спешил с выводами.
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Kopilov
Сообщения: 947
ОС: [K]Ubuntu, Debian

Re: Прибивание программы гвоздями к...

Сообщение Kopilov »

Пишите на Java, заcтрахуйте свои руки :D
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Re: Прибивание программы гвоздями к...

Сообщение ArkanJR »

ArkanJR писал(а):
10.11.2017 23:09
Bizdelnick писал(а):
10.11.2017 12:18
Ну так исходный вопрос и был про то, за что надо руки отрывать.

Я бы не спешил с выводами.

Несмотря на растущую популярность кроссплатформенных программ, таких как Firefox и OpenOffice, нет такой программы, ради которой стоило бы установить Linux на домашний компьютер.»

© LXF71:Настольный Linux

В приведённой цитате я бы заменил домашний компьютер на рабочую станцию. Имелся бы специализированный софт, заточенный под линукс, без которого работа в той или иной корпоративной сфере была бы ощутимо некомфортной, глядишь бы и доля ОС на базе линукс в корпоративном секторе была бы куда выше нынешней...

Так сказать продолжение невесёлого разговора про использование Windows военными на службе.
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Прибивание программы гвоздями к...

Сообщение Bizdelnick »

ArkanJR писал(а):
11.11.2017 08:33
Имелся бы специализированный софт, заточенный под линукс, без которого работа в той или иной корпоративной сфере была бы ощутимо некомфортной, глядишь бы и доля ОС на базе линукс в корпоративном секторе была бы куда выше нынешней...

Если бы такой софт имелся, про него всё равно бы никто не знал, так что ничего бы не изменилось, а разработчики просто потеряли время впустую. Будущее за переносимым софтом.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ArkanJR
Сообщения: 1164
Статус: Профан

Re: Прибивание программы гвоздями к...

Сообщение ArkanJR »

Bizdelnick писал(а):
11.11.2017 10:30
Если бы такой софт имелся, про него всё равно бы никто не знал, так что ничего бы не изменилось, а разработчики просто потеряли время впустую. Будущее за переносимым софтом.

Совсем не факт...
10% — это 0,1.
© Bizdelnick
Спасибо сказали:
Ответить