Прибивание программы гвоздями к...
Модератор: Модераторы разделов
Прибивание программы гвоздями к...
Каким образом программное обеспечение прибивается гвоздями к операционной системе и/или компьютерной архитектуре так, что через некоторое время проще написать эмулятор для запуска данного ПО, чем переписывать его под другую ОС и/или железо?
10% — это 0,1.
© Bizdelnick
© Bizdelnick
Re: Прибивание программы гвоздями к...
Можно проверять 100500 параметров данной ОС/железа, причем делать это 100500 разными функциями. Можно также использовать 100500 антиотладочных способов, причем все также веером раскидать по коду. Навернуть 100500 слоев высокоуровневых абстракций...
А насчет переписывания - если исходного кода нет, то чаще всего именно проще (и дешевле) написать эмулятор. Кстати, даже если он есть - можно писать код так, что стоимость его изменения/доработки многократно превысит написание его с нуля. И это не обязательно может быть говнокод
А насчет переписывания - если исходного кода нет, то чаще всего именно проще (и дешевле) написать эмулятор. Кстати, даже если он есть - можно писать код так, что стоимость его изменения/доработки многократно превысит написание его с нуля. И это не обязательно может быть говнокод
Спасибо сказали:
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Прибивание программы гвоздями к...
К ОС — очень просто: достаточно использовать специфичные для неё API или библиотеки. Например WinAPI, нестандартные расширения GNU libc, системные вызовы и т. п.
К архитектуре — чуть сложнее, есть два варианта. Первый — полнейшая безграмотность разработчиков, которые исходят из допущений, верных только для одной архитектуры (например о типах данных: ширина int, размер указателя, знаковость char и всё такое; также могут полагаться на какой-то вариант не определённого стандартом языка поведения). Второй — привязанные к архитектуре оптимизации (ассемблерные вставки, SIMD), сделанные без сохранения переносимой реализации.
К архитектуре — чуть сложнее, есть два варианта. Первый — полнейшая безграмотность разработчиков, которые исходят из допущений, верных только для одной архитектуры (например о типах данных: ширина int, размер указателя, знаковость char и всё такое; также могут полагаться на какой-то вариант не определённого стандартом языка поведения). Второй — привязанные к архитектуре оптимизации (ассемблерные вставки, SIMD), сделанные без сохранения переносимой реализации.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Прибивание программы гвоздями к...
Bizdelnick писал(а): ↑05.11.2017 21:13К ОС — очень просто: достаточно использовать специфичные для неё API или библиотеки. Например WinAPI, нестандартные расширения GNU libc, системные вызовы и т. п.
Типа
Код: Выделить всё
system("clear");
10% — это 0,1.
© Bizdelnick
© Bizdelnick
Re: Прибивание программы гвоздями к...
Спасибо сказали:
Re: Прибивание программы гвоздями к...
Это как раз давным-давно обратно совместимо. Так же, как и API libc.
Вот версии других разделяемых библиотек вполне могут повлиять.
Re: Прибивание программы гвоздями к...
s.xbatob
Вопрос был не про "обратную" совместимость, а между разными ОС и архитектурами. Вы правда считаете, что syscall написанный для Linux заработает на FreeBSD? Я даже про Linux x86_64 и Linux ARM не был бы уверен.
Вопрос был не про "обратную" совместимость, а между разными ОС и архитектурами. Вы правда считаете, что syscall написанный для Linux заработает на FreeBSD? Я даже про Linux x86_64 и Linux ARM не был бы уверен.
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Прибивание программы гвоздями к...
Ну вообще в FreeBSD для этого есть прослойка-эмулятор, так что данный конкретный пример не самый удачный.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Прибивание программы гвоздями к...
Bizdelnick
Заработает любой syscall написанный для Linux? Не ожидал.
Заработает любой syscall написанный для Linux? Не ожидал.
Re: Прибивание программы гвоздями к...
Двоичный код для X86 на ARM, понятное дело, не заработает. Но программа, пересобранная из одних и тех же исходных текстов, скорее всего заработает.
Re: Прибивание программы гвоздями к...
Стоп!
Я, наверное, могу даже и пристроить -- потому что я начал работать с UNIXами в те времена, когда не то чтобы sysv, так и pc ещё не было. На машинах, совместимых с pdp-11. Но не хочу.
И вообще, держался бы я за старое, так до сих пор работал бы на логарифмической линейке или на арифмометре.
Ну ладно, всё это беллетристика. А совместимости не будет, и бороться за неё - это путь в никуда, к тому же арифмометру. Такая же у нас профессия: как только ты стал в своей области гуру, так это уже никому не интересно. Приходится следить за новым это всё изучать как дураку.
Re: Прибивание программы гвоздями к...
s.xbatob
Опять вы за "старое". Вопрос не в старом или обратной совместимости, а в том как написать программу, которую сложно переписать под другую ОС или архитектуру. Сейчас это в основном Windows, OS X, Linux, FreeBSD и IA32, AMD64, ARM, ARM Thumb(2), AArch64.
Например, как Total Commander, прибитый гвоздями к WinAPI.
Опять вы за "старое". Вопрос не в старом или обратной совместимости, а в том как написать программу, которую сложно переписать под другую ОС или архитектуру. Сейчас это в основном Windows, OS X, Linux, FreeBSD и IA32, AMD64, ARM, ARM Thumb(2), AArch64.
Например, как Total Commander, прибитый гвоздями к WinAPI.
Спасибо сказали:
Re: Прибивание программы гвоздями к...
NickLion можно написать что угодно. И мои молодые коллеги периодически такое сотворить пытаются. Только за такой стиль надо руки отрывать!
Собственно, и отрывать не надо. Они потом на поддержке своего кода сами мучаются.
Собственно, и отрывать не надо. Они потом на поддержке своего кода сами мучаются.
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Прибивание программы гвоздями к...
Ну так исходный вопрос и был про то, за что надо руки отрывать.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Прибивание программы гвоздями к...
Эм, вы хотите оторвать руки разработчикам Total Commander? Тогда я категорически против. Приложения за редким исключением сами собой кросплатформенными не получаются, их надо специально такими делать, и поэтому если задача сделать приложение кросплатформенным не ставилась, то некроссплатформенность результата — это абсолютно нормально.Bizdelnick писал(а): ↑10.11.2017 12:18Ну так исходный вопрос и был про то, за что надо руки отрывать.
Re: Прибивание программы гвоздями к...
Bizdelnick писал(а): ↑10.11.2017 12:18Ну так исходный вопрос и был про то, за что надо руки отрывать.
Я бы не спешил с выводами.
10% — это 0,1.
© Bizdelnick
© Bizdelnick
Re: Прибивание программы гвоздями к...
Пишите на Java, заcтрахуйте свои руки
Re: Прибивание программы гвоздями к...
ArkanJR писал(а): ↑10.11.2017 23:09Bizdelnick писал(а): ↑10.11.2017 12:18Ну так исходный вопрос и был про то, за что надо руки отрывать.
Я бы не спешил с выводами.
Несмотря на растущую популярность кроссплатформенных программ, таких как Firefox и OpenOffice, нет такой программы, ради которой стоило бы установить Linux на домашний компьютер.»
© LXF71:Настольный Linux
В приведённой цитате я бы заменил домашний компьютер на рабочую станцию. Имелся бы специализированный софт, заточенный под линукс, без которого работа в той или иной корпоративной сфере была бы ощутимо некомфортной, глядишь бы и доля ОС на базе линукс в корпоративном секторе была бы куда выше нынешней...
Так сказать продолжение невесёлого разговора про использование Windows военными на службе.
10% — это 0,1.
© Bizdelnick
© Bizdelnick
- Bizdelnick
- Модератор
- Сообщения: 20791
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Прибивание программы гвоздями к...
Если бы такой софт имелся, про него всё равно бы никто не знал, так что ничего бы не изменилось, а разработчики просто потеряли время впустую. Будущее за переносимым софтом.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
Re: Прибивание программы гвоздями к...
Bizdelnick писал(а): ↑11.11.2017 10:30Если бы такой софт имелся, про него всё равно бы никто не знал, так что ничего бы не изменилось, а разработчики просто потеряли время впустую. Будущее за переносимым софтом.
Совсем не факт...
10% — это 0,1.
© Bizdelnick
© Bizdelnick