* При попытке компиляции на W98 выводятся следующие сообщения:
C:\SPF\src>compile.bat
C:\SPF\src>cd ..
Wait a bit while compiling...
Base address of the image 0x552000
=============================================================
Done. Saving the system.
=============================================================
EXCEPTION! CODE:C000001D ADDRESS:55236D WORD:/COUNTED-STRING 255
C:\SPF>
* Если откомпилировать на XP и перенести spf4.exe на W98, то при запуске появляется:
C:\SPF>spf4.exe
EXCEPTION! CODE:C000001D ADDRESS:55236D WORD:/COUNTED-STRING 255
C:\SPF>
Logged In: YES
user_id=258714
Originator: NO
Адрес 55236D относится к слову MIN, и там находится инструкция CMOVL:
55236D 0F4CC2 CMOVL EAX , EDX
Данный код был внесен 2-го августа:
http://spf.cvs.sourceforge.net/spf/src/spf_forthproc.f?r1=1.18&r2=1.19
Если взять сорцы на конец июля, будет ли компилироваться? При эспериментах на XP и Win98 используется таже самая машина? Остается непонятным, как в дамп об ошибке попадает строка из ENVIR.SPF
Logged In: YES
user_id=446046
Originator: YES
>Если взять сорцы на конец июля, будет ли компилироваться?
как это лучше сделать?
>При эспериментах на XP и Win98 используется таже самая машина?
Разные. XP Athlon XP 2800+ (разгон 2500+, ошибок в работе др. программ не замечено)
W98 AMD K6-2-450
>Остается непонятным, как в дамп об ошибке попадает строка из ENVIR.SPF
Мне тоже :(
Logged In: YES
user_id=1524915
Originator: NO
>как это лучше сделать?
для клиента коммандной строки
cvs up -d -P -D 2007-07-31 10:00
потом когда захотите вернуться к HEAD
cvs up -d -P -A
в SmartCVS - выбираете switch (special update)
Logged In: YES
user_id=258714
Originator: NO
Должно быть, команды CMOVL нету в AMD K6 (google: AMD K6-2 Processor Instruction Mnemonic). Если задача разовая — сделайте спец-сборку, пропатчив на старый вариант все подобные слова.
Logged In: YES
user_id=446046
Originator: YES
Большая радость, после убирания команд вида CMOVx из файла C:\SPF\src\spf_forthproc.f компиляция прошла успешно, получившийся SPF4.EXE тоже работает.
Переделанный файл дам по запросу. Как я понял, пока такое нужно только мне. ;)
Вопросы:
Как определить, с какими процессорами совместима определенная версия откомпилированного SPF?
Будет ли поддерживаться совместимость с ранними версиями процессоров?
Где в документации отражены ограничения (особенности) использования текущей версии SPF?
Logged In: YES
user_id=446046
Originator: YES
Можно ли сделать поддержку условной компиляции в зависимости от типа процессора?
Или описать, что не совместим с процессорами, начиная с какого-то (тогда желательно описать, с какими совместим, хотя бы с какого года изготовления...)
Сейчас совместимости с W95 уже нет... :(
Logged In: YES
user_id=258714
Originator: NO
Да, хорошо бы сделать. Возьметесь? Фактически, SPF затачивается лишь в тех направлениях, в которых он используется.
Logged In: YES
user_id=132884
Originator: NO
А много в ядре SPF таких мест, которые не заработают на 386х 20-летней давности и на Win95?
Я считаю, что _ядро_ по-прежднему должно поддерживать старые (но 32-битные) процессоры и старые (но 32-битные) версии Windows. И если у нас есть что-то, что этому мешает, нужно обязательно убрать. Пусть даже ценой потери скольких-то процентов производительности.
Logged In: YES
user_id=258714
Originator: NO
> Как определить, с какими процессорами совместима определенная версия откомпилированного SPF?
Попался скрипт на Перле, который по бинарнику определяет требуемое подсемейство процессора, путем дизассемблирования (objdump) и анализа используемых иструкций на предмет неких ключевых: http://dev.gentoo.org/~dirtyepic/bin/analyze-x86