![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Modder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.1.2008 Репутация: нет Всего: нет |
Как откопилировать 16-bit'ную программу на C в Borland 5.02 или Microsoft Visual Studio 2005?
|
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
это зависит. код покажи.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Modder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.1.2008 Репутация: нет Всего: нет |
Вот одна из программ:
|
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Modder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.1.2008 Репутация: нет Всего: нет |
Качал уже кучу таких программок, но все равно не вышло.
Нашел способ с помощью Borland через командную строку
И еще вопрос, можно ли такого рода программку без заморочек перевести на 32-bit? |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
у меня скомпилилось в первого раза.
поясните. нет. эта, скомпиленная 16-ти битным компилятором, не может работать в вендавз, про остальное и говорить не чего... -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Modder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.1.2008 Репутация: нет Всего: нет |
Т.е. откомпилировать виндузным компилятором (тем же Borland 5), пользуясь виндузным его интерфесом (не командной строкой как я предложил выше), а не досовским компилятором (типа Turbo C).
Я не это имел ввиду. Как исходный код переписать под 32-bit? Много переписывать? В чем отличия в коде? Почему 32-битным не компилируется? Я просто с этим не особо знаком. |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
я бы не назвал его вендозавским компилятором. это что-то между ms-dos и win-3.1 для начала нужен 32-ух битный компилятор. далее. в вашем коде используется доступ к регистрам процессора, и вызов прерываний ms-dos. если с первым еще можно справится, то последнее не возможно. одним словом, эта программа для ms-dos. да и зачем она вам? судя по (reg.x.ax = 0x440d), программа что-то выполняет с диском. в венде такое не прокатит. для начала, нужно понять что именно программа выполняет. потому что, этот код остался в прошлом, лет эдак 15-20 назад. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Modder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.1.2008 Репутация: нет Всего: нет |
||||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Потому что его (MS-DOS) там (в Win32) нет. MS-DOS'овские программы под Win32 запускаются в специальном эмуляторе, который перехватывает все вызовы MS-DOS (и вообще все команды int) и перенаправляет их в соотвествующие драйвера поддержки. |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
и это(0x440d) виндовз не позволит выполнить. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| kogemrka |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 8.1.2010 Репутация: нет Всего: нет |
На самом деле прерывания в 32-битном режиме есть, но винда не позволит их вызвать. Дело в том, что в этом режиме (он называется защищённом) код исполняется в разных т.н.з. "кольцах защиты". Ядро операционной системы и драйверы работают в нулевом кольце - они могут обращаться к оборудованию напрямую и использовать прерывания. Прикладное ПО работает (как правило) в третьем кольце и может обращаться к "железу" только через абстракции (вызов функций ядра, например).
Чтобы портировать этот код вам нужно найти в справочнике прерываний, для чего предназначены вызовы, используемые в программах и заменить на вызов функций API, выполняющих ту же работу. "без заморочек" сделать это не получится |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
можно еще пойти с другой стороны и вместо переделки поискать готовый виндоыный аналог вашей программы..
Если она выполняла что то полезное, что и щас может пригодиться, то вроятность находки велика. Добавлено через 12 минут и 45 секунд интересно на каком диске Вы собираетесь применять сию защиту.. Уж не на жеском ли ? или неужто до сих пор существуют (в смысле используются) магнитные диски ?! |
|||
|
||||
| Modder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 4.1.2008 Репутация: нет Всего: нет |
mes, данная программа выполняет чтение 81-ой дорожки дискеты, считывает от туда счетчик количества запусков или установок какого-то ПО. Если счетчик не нулевой, то все хорошо и он уменьшается на 1. Типа ограниченное кол-во запусков)) Но под виндой она не работает, не выполняет операции чтения/записи:( В dos'е все ок.
Как оказалось, используюстся:( Но только в образовательных целях) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |