Kamrad.ru

Go Back   Kamrad.ru > Форумы общей тематики > Программы (software)

Reply
 
Thread Tools Display Modes
Old 07-03-2001, 12:52   #1
mOOrmaN
Камрад
 
Join Date: дек 2000
Location: Тверь
Сообщений: 130
Question Старые проги на новых процессорах

Некоторые программы скомпилированые на старых (ну там 386) машинах не хотят запускаться на P-II - выдают ошибку 200. Подскажите плис, как это вылечить? Где-то раньше видел тему в инете, да забыл где.
mOOrmaN is offline   [Ответить с цитированием]
Old 07-03-2001, 13:36   #2
Xpert
Камрад
 
Join Date: авг 2000
Location: EKB-City, RUSSIA
Сообщений: 153
Smile

По-моему тебе сюда:
http://www.kamrad.ru/forum/Forum1/HTML/000218.html

------------------
Кто не боится Дьявола, тому не нужен бог.
Xpert is offline   [Ответить с цитированием]
Old 07-03-2001, 18:13   #3
mOOrmaN
Камрад
 
Join Date: дек 2000
Location: Тверь
Сообщений: 130
Wink

Спасибо, но дело не в скорости. Ошибка (о которой речь) возникает от заточености старых паскалевских компиляторов на архитектуру старых же 86 процессоров. Уже готовый екзешник можно отредактировать, но что именно?...
mOOrmaN is offline   [Ответить с цитированием]
Old 07-03-2001, 18:38   #4
Alexvn
Администратор
Буржуин проклятый
 
Join Date: мая 2000
Location: Париж, Франция
Сообщений: 10,913
Smile

В теме по ссылке как раз и написано, что можно сделать. А где именно редактировать - не знаю.
Alexvn is offline   Дневник [Ответить с цитированием]
Old 09-03-2001, 05:00   #5
Xpert
Камрад
 
Join Date: авг 2000
Location: EKB-City, RUSSIA
Сообщений: 153
Smile

Я, конечно, мог бы вспомнить молодость, достать дебаггер и заново начать разбираться, где какие байтики надо поменять, чтобы программка работала. Но, все-таки, не буду. Могу только вкратце сказать, из-за чего такая фигня возникает. При компиляции паскалем программ, использующих библиотеку CRT (uses crt), в самом начале программы появляются два call-а на процедурки, устанавливающие всякия параметры и прерывания. В одной из процедурок есть что-то типа определения скорости проца, там хитрым образом засекается количество циклов проца, затраченных на выполнение какой-то фигни. Затем то-ли время, то-ли еще что-то (я не помню) делится на это число - получается некий параметр, определяющий скорость проца, он используется в delay-ях и еще где-то. Так вот, на быстрых процах количество циклов проца оказывается равным нулю, из-за чего далее возникает ошибка деления на 0 - та самая Runtime error 200.
Способов борьбы с этим много. Большинство описаны в ветке по ссылке.
Если очень надо, то могу поподробнее рассказать что и где конкретно глючит, но ты для этого должен нормально дружить с ассемблером.

------------------
Кто не боится Дьявола, тому не нужен бог.
Xpert is offline   [Ответить с цитированием]
Old 09-03-2001, 13:03   #6
mOOrmaN
Камрад
 
Join Date: дек 2000
Location: Тверь
Сообщений: 130
Smile

Ин принцЫп-то действительно надо. Есть пара старых прог (нечто вроде баз данных) которыми надо будет попользоваться некоторое время, и запускать при этом анрилы да архиваторы ну совсем неудобно. А на счёт дружбы с ассемблером я так знаю как он выглядит, call от mov отличу но всерьёз бодаться не способен, так что пардон
mOOrmaN is offline   [Ответить с цитированием]
Old 09-03-2001, 18:07   #7
max3000
Камрад
 
Join Date: дек 2000
Location: Минск, Беларусь
Сообщений: 321
Smile

Всё так, как сказал Xpert, только наоборот.
Т.е. количество циклов не зависит от скорости проца, а зависит только время. И делится не время на кол-во циклов, а кол-во циклов на время.
Ускоряй системный таймер, тока потом придёться вручную время править (или написать прогу такую). Я впрочем могу такую прогу написать - для ускорения и корректировки времени, но боюсь, что она будет работать только в ДОС'е и не слишком новых виндах. Если надо пиши.
max3000 is offline   [Ответить с цитированием]
Old 09-03-2001, 20:16   #8
Xpert
Камрад
 
Join Date: авг 2000
Location: EKB-City, RUSSIA
Сообщений: 153
Smile

2 max3000
Ну да, так и есть. Просто давно было, уже плохо помню.

А прогу я (с одним парнем) написал уже, она садится резидентом и забивает нужные регистры. Поэтому ошибка деления на 0 не может возникнуть. Если эту программулинку запускать до нужной проги, то все будет работать. По крайней мере, у меня - работает.
Могу по почте заслать, если кому надо.

------------------
Кто не боится Дьявола, тому не нужен бог.
Xpert is offline   [Ответить с цитированием]
Old 09-03-2001, 22:21   #9
max3000
Камрад
 
Join Date: дек 2000
Location: Минск, Беларусь
Сообщений: 321
Smile

Зачем резиденты?
Просто ускоряется системный таймер. По тестам 800-й P3 станет, например сотым, если тест не будет трогать таймер, а в реале практически не замедлится. И всё будет работать как надо (если не будет трогать таймер). "Замедлить" можно где-то в 65535 раз.
Я, пожалуй, попробую написать прогу, но вот беда тестить негде, у самого 412МГц, вероятность ошибки очень низкая ~3%.
max3000 is offline   [Ответить с цитированием]
Old 10-03-2001, 14:16   #10
mOOrmaN
Камрад
 
Join Date: дек 2000
Location: Тверь
Сообщений: 130
Thumbs up

2Xpert Надо, если не трудно зашли пожалуйста на orlov@tversu.ru
Кстати не очень понял: резидент в окне ДОС или для всей винды? (Хотя это уж не так принципиально)
mOOrmaN is offline   [Ответить с цитированием]
Old 10-03-2001, 14:22   #11
Jazz
Модератор
Freelancer
 
Join Date: сен 2000
Сообщений: 8,530
Мне тоже уже понадобилось.
aleks96@mail.ru

Спасибо.
Jazz is offline   Дневник [Ответить с цитированием]
Old 11-03-2001, 07:54   #12
Xpert
Камрад
 
Join Date: авг 2000
Location: EKB-City, RUSSIA
Сообщений: 153
Smile

Двоим заинтересованным камрадам (Jazz & mOOrman) ушла передача в виде аттача . Т.е. разрекламированная мной утилитка обрела еще 2х новых владельцев.

------------------
Кто не боится Дьявола, тому не нужен бог.
Xpert is offline   [Ответить с цитированием]
Old 11-03-2001, 08:59   #13
Jazz
Модератор
Freelancer
 
Join Date: сен 2000
Сообщений: 8,530
Smile

2 Xpert

Спасибо.Пришло...
Jazz is offline   Дневник [Ответить с цитированием]
Old 11-03-2001, 12:19   #14
Romsan
Камрад-Банкир
 
Romsan's Avatar
 
Join Date: фев 2001
Сообщений: 474
Arrow

Хотя уже договорились... но всеж...
Я пользовался просто замедлителем... ЦПУ-Киллер...
Romsan is offline   Дневник [Ответить с цитированием]
Old 14-03-2001, 09:10   #15
mOOrmaN
Камрад
 
Join Date: дек 2000
Location: Тверь
Сообщений: 130
Thumbs up

Xpert, спасибо, то что надо!
mOOrmaN is offline   [Ответить с цитированием]
Old 15-03-2001, 10:51   #16
GoldenAndy
Камрад
 
GoldenAndy's Avatar
 
Join Date: дек 2000
Location: Киев
Сообщений: 222
Smile

Есть у меня програмулина, pasp2fix называется.
Она сканит прогу (ЕХЕ-файл) и исправляет ошибку деления на 0. После этого хоть на третьем пне 800 гоняй!

пишите по goldenandy@pisem.net - пришлю...
GoldenAndy is offline   [Ответить с цитированием]
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +3. The time now is 02:23.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Любое использование материалов сайта
возможно только с разрешения его администрации.