Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема совместимости конкретной программы конца 90-х годов  (Прочитано 19694 раз)
0 Пользователей и 1 Гость смотрят эту тему.
IgelImNebel
Интересующийся

ru
Offline Offline

« : 14-11-2017 10:37 » 

Всем доброго времени суток!

Ситуация следующая: имеется некая программка для мониторинга и дистанционного управления неким (это секрет) оборудованием. Всё что о ней известно это ее размер (580 КБ (593 978 байт)); Состоит из одного файла .exe; Год поставки на объект вместе с оборудованием - 2001; Работала порядка 15 лет под управлением Windows 95; Установки не требует.

А теперь о проблеме: при запуске на Win7 загружает ЦП на 100%. Запуск в любом доступном режиме совместимости не устраняет проблему.

Суть вопроса: правильной ли я дорогой иду пытаясь решить проблему? Может кто сталкивался с подобной проблемой и что-то сможет посоветовать?

Дорога избранная мною:
1) Попытаться декомпилировать программу во всех бесплатных декомпиляторах которые удастся найти и скачать;
2) Если найдется декомпилятор распознающий эту стерлядь (это рыба такая) то скомпилировать полученный код под нужную ОСь;
3) Если будет работать хорошо то и славно. Если нет то отдебажить (извините за выражение) её по-полной и опять скомпилировать;
4) А дальше по обстоятельствам.

P.S. Доселе не пользовался декомпилятором и не представляю, что получится на выходе. Да и программист из меня никакой, чтобы искать в незнакомой программе  подобного рода баги. Именно поэтому решил сперва задать вопрос на форуме в надежде на подсказку знающего человека - вдруг вообще я не в ту степь попёр и мне не нужно так заморачиваться?
P.P.S. Программка реально нужная на объекте, старый комп под Win95 потух, а новый (самосборный из старых деталек) не потянет параллельно виртуалку с еще одной виндой.
Записан
Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 14-11-2017 11:07 » 

по какому аппаратному интерфейсу программа  управляет этим оборудованием ?
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 14-11-2017 11:17 » 

Если приложение под виртуалкой работоспособно - я бы следовал пути "работает - не ломай": скорее всего, дешевле будет найти/модернизировать комп, тянущий виртуалку (не так уж много там и надо), или отдельный для Win95, чем тратить время на декомпиляцию и прочие танцы с бубном.
« Последнее редактирование: 14-11-2017 11:20 от Вад » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 14-11-2017 15:05 » 

virtualbox  вроде должон вытянуть, и не так много жрет памяти,
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 14-11-2017 15:15 » 

Дорога избранная мною:
1) Попытаться декомпилировать программу во всех бесплатных декомпиляторах которые удастся найти и скачать;
...
Цена этой дороги скорее всего будет выше стоимости целого старого, но рабочего ПК.

Оборудование случаем LPT и COM порты не использует?
Записан
darkelf
Молодой специалист

ua
Offline Offline

« Ответ #5 : 15-11-2017 07:40 » 

IgelImNebel, Насколько я знаю, декомпилятор, а вообще - дизассемблер, не выполнит Вам портирование под новую ОС, в лучшем случае Вы получите после трансляции полученного исходника на языке ассемблера - идентичный до байта exe-файл. Самый простой вариант Вам уже подсказали - лучше попытаться запустить в виртуальной машине. Гораздо более сложный, имхо, вариант - дизассемблировать, разобраться что оно делает, и написать нужный функционал с нуля.
Записан
IgelImNebel
Интересующийся

ru
Offline Offline

« Ответ #6 : 15-11-2017 15:08 » 

по какому аппаратному интерфейсу программа  управляет этим оборудованием ?
Дорога избранная мною:
1) Попытаться декомпилировать программу во всех бесплатных декомпиляторах которые удастся найти и скачать;
...
Цена этой дороги скорее всего будет выше стоимости целого старого, но рабочего ПК.

Оборудование случаем LPT и COM порты не использует?
Да-да тот самый COM (RS-232)
А это важно? Программа запускается на любом другом компьютере. И и на любом сразу ЦП грузит на 100%. Не важно даже подключаем ли её к целевому оборудованию.
Записан
IgelImNebel
Интересующийся

ru
Offline Offline

« Ответ #7 : 15-11-2017 15:24 » 

IgelImNebel, Насколько я знаю, декомпилятор, а вообще - дизассемблер, не выполнит Вам портирование под новую ОС, в лучшем случае Вы получите после трансляции полученного исходника на языке ассемблера - идентичный до байта exe-файл. Самый простой вариант Вам уже подсказали - лучше попытаться запустить в виртуальной машине. Гораздо более сложный, имхо, вариант - дизассемблировать, разобраться что оно делает, и написать нужный функционал с нуля.
Честно признаюсь я в данной теме не разбираюсь, поэтому поправьте если ошибаюсь - при дизассемблировании получается набор команд на ассемблере, а при декомпиляции должен получиться код на языке высокого уровня на котором он был написан (пусть и не в исходной форме как писал разработчик и не столь удобочитаемый). Например если программа была скомпилирована с языка Си то при декомпиляции декомпилятором именно для этого языка и получится на выходе что-то на том же Си?

Моя мысль была такой: "а если загрузка ЦП это не баг программы (ведь не грузит на 100% под win95), а особенность её работы под управлением ОС? Разные версии ОС имеют свои особенности, которые наверняка учитывают компиляторы. Следовательно если исходник скомпилировать по новой,  свежим компилятором, то может что-то измениться, что позволяет программе так забивать запросами камень."
Записан
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 15-11-2017 18:30 » 

Да-да тот самый COM (RS-232)
А это важно?
Бывает важно, некоторые программы требуют присутствия именно COM порта, размещённого непосредственно на материнской плане. И не поддерживают мосты, например, вида USB<->RS-232 или PCI<->RS-232.

а при декомпиляции должен получиться код на языке высокого уровня на котором он был написан (пусть и не в исходной форме как писал разработчик и не столь удобочитаемый).
Про декомпиляцию слышу впервые, и не очень верю в её успех. Теоретически, код на ассемблере можно представить в виде "С" формата, однако чтение такого кода будет ещё более сложным, чем читать исходный код на ассемблере. Одна работа с флагами во что может вылиться, да и обозначения переменных без привязки к их сущности только запутает дело.

В проблеме можно разобраться, потратив неопределённо большое количество сил и времени на проработку. Старый ПК стоить может крайне не дорого, предположим, 5К, некоторые люди столько зарабатывают за день. В Tiny модели памяти формата *.com с максимальным размером в 64 КБ можно ковыряться не одну неделю. Иногда дешевле заказать разработку продукта заново.
Записан
Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 15-11-2017 22:04 » 

IgelImNebel,
винда x32 или x64? запускали с правами администратора?
кстати программа виндовая? точно не дос?) (на всякий случая - я уж забыл как там оно было в 95том с портами i/o )
тоже встречал, что не все любят работать с ком портами через мосты. как ком порт Был и теперь реализован физически? USB шнурок, плата, встроенный?
настройки порта?
PS может действительно проще найти старый комп с 95той виндой и не тратить время?) декомпиляция... не стоит оно того ИМХО)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 15-11-2017 22:58 » 

Я так понимаю, что программулина напрямую лезет к адресам порта, миную системные настройки.
А может все же нет?
Если она образца 2000, то там уже и xp была, и 98-ая
А может там вообще crt-шная либа доступа к видео?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
IgelImNebel
Интересующийся

ru
Offline Offline

« Ответ #11 : 16-11-2017 03:22 » 

Огромное спасибо за подсказки и информацию. На следующей смене поспрашиваю мужиков,  что и как там работает, попробуем запустить с подключением (хотя это они вероятно в первую очередь пробовали).
Насчёт того для дос или нет она -  не знаю.
Но скорее всего не новее 95го ибо внедряют инновации на объект медленно и уже проверенные, дабы 100% работало.
По поводу заказа обновлённого ПО -  компании которая выпускала оборудованип уже давно нет, следовательно и поддержки оного. Так бы не пытались своими силами решить.

Как будут какие-либо новые подробности - напишу.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 16-11-2017 07:31 » 

Помню, уже в 2004-м были трудности поставить 95-ую винду на современное железо тех лет, да и нафиг эта падучая жуть, когда уже был XP. У нас тоже было ПО для настройки мультиплексоров SDH, которое на 98 даже не запускалось. VMWare решило все проблемы. Сегодня систем виртуализации много больше.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
IgelImNebel
Интересующийся

ru
Offline Offline

« Ответ #13 : 21-11-2017 04:05 » 

В общем со всеми подключениями и правами администратора конечно-же пробовали и до меня.
А программа,  говорят,  скорее всего под дос деланая.
В общем видимо с виртуалкой что-то придумывать будем.
Записан
Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 21-11-2017 20:46 » 

виртуалка - наверное это лучшее решение. железобетонно будет работать сейчас и в будущем.  но есть вроде другой путь:
попробуйте глянуть DosBox с настройкой порта по http://www.dosbox.com/wiki/Configuration:SerialPort
похоже на то, что вам надо... я не пробовал.

видео, https://www.youtube.com/watch?v=xIyldfZGNAQ

PS если будете пробовать  - расскажите, как оно?
« Последнее редактирование: 21-11-2017 20:57 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 21-11-2017 21:37 » new

DosBox — эмулятор. Т.е. работает много медленнее, чем вируталка (при наличии поддержки виртуализации в ядре).
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Ochkarik
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 22-11-2017 07:18 » 

RXL, в вики и virtualBox эмулятором обозван в статье)
на самом деле а зачем досу виртуалка нужна? медленнее - понятие отностиельное, может программе будет достаточно.
PS там кстати скорость по умолчанию занижена. и режим эмуляции можно поменять.
« Последнее редактирование: 22-11-2017 10:54 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 22-11-2017 14:05 » 

Вопрос: какой из методов отобразит фактические порты на пространство портов DOS? То есть, предположим, у Вас на ПК нет непосредственно установленных портов:
COM1: I/O port 0x3F8, IRQ 4
COM2: I/O port 0x2F8, IRQ 3
COM3: I/O port 0x3E8, IRQ 4
COM4: I/O port 0x2E8, IRQ 3
, но есть плата PCI-e, которая использует драйвер Windows, который сам по себе пространство портов МП не затрагивает. Устройство COM1 в Windows средствами WINAPI как бы есть, а порт 0x3F8 не отвечает, и программа в режиме V86 не работает.
Записан
darkelf
Молодой специалист

ua
Offline Offline

« Ответ #18 : 22-11-2017 14:26 » 

Тут, пишут, что можно настроить гостевой COM-порт, на нужный реальный.
Записан
Aether
Специалист

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 22-11-2017 15:15 » 

Тут, пишут, что можно настроить гостевой COM-порт, на нужный реальный.
Тогда решение подходит, единственное, что смущает, как в принципе такое отображение происходит? В ранних х86, если я правильно помню, линии портов и памяти были одни и те же, просто инструкции "IN" и "OUT" выставляли на специальной линии флаг, что значения на шине идут не в память, а в физическое устройство. Тут же получается, что устройства-то нет.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #20 : 22-11-2017 20:26 » 

VirtualBox, при наличии аппаратной поддержки виртуализации, выполняет код без потерь (кроме эмуляции железа). Иначе, конечно, нужна эмуляция.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines