По просьбе наших посетителей, данный материал перенесен с сайта plc4good.org.ua, в связи с полной его потерей. Всё возражения принимаются через форму обратной связи.
plc4good.org.ua/view_post.php?id=273
Настройки, влияющие на генерируемый компилятором код.
Как по внешнему виду STL кода узнать с какими настройками компилятора SCL, его сгенерировали?
Также материал будет интересен тем кто хочет разобраться в настройках компилятора SCL.
Все возможные варианты опций компилятора SCL приведены ниже. Только четыре из них влияют непосредсвенно на вид сгенерируемого кода.
{
Scl_ResetOptions ,
Scl_OverwriteBlocks:= ‘y’ ,
Scl_GenerateReferenceData := ‘y’ ,
Scl_S7ServerActive:= ‘y’ ,
Scl_CreateObjectCode:= ‘y’ ,
Scl_OptimizeObjectCode:= ‘y’ ,
Scl_MonitorArrayLimits:= ‘n’ ,
Scl_CreateDebugInfo := ‘n’ ,
Scl_SetOKFlag:= ‘n’ ,
Scl_SetMaximumStringLength:= ‘254’
}
Set OK flag или Scl_SetOKFlag
Будучи включенной, опция генерирует дополнительный код, который контролирует внутренние операции и при появлении ошибок в них сбрасывает флаг OK в false.
Визуально, о том, что код был сгенерирован с этой установленной опцией говорят следующие вставки:
Адрес флага OK – верхняя граница локального стека, области TEMP.
Флаг OK можно проверить как в самом блоке, так и после выполнения блока, в коде из которого был вызван блок.
Monitor array limits или Scl_MonitorArrayLimits
Созданный дополнительный код, при установки данной опции, контролирует индекс на выход за границы, объявленные в массиве, и при нарушении сбрасывает флаг OK в false.
Визуально, о том, что код был сгенерирован с этой установленной опцией говорят следующие вставки:
После работы с массивом, корректность работы можно оценить с помощью OK флага
и обработать событие дополнительным кодом.
Optimize object code или Scl_OptimizeObjectCode
При включении данной опции, компилятор пытается сократить код, используя разные трюки ).
Визуально, разницу можно увидеть на следующем примере:
Если оптимизация выключена – компилятор перестает использовать аккумуляторы и другие регистры для промежуточного хранения результатов.
Данные для работы достаются только оттуда где они должны лежать.
Create debug info или Scl_CreateDebugInfo
При включении данной опции, в код добавляются вставки позволяющие выполнять онлайн мониторинг значений из редактора SCL в online.
Визуально, разницу можно увидеть на следующем примере:
При включении опции, в код включаются загрузки без использования различных переменных,
а также прибавление нулей к переменным, для последующего их отображения в окне online просмотра.
Вывод:
Если в тексте вашего блока не используется OK флаг – включать его формирование и проверку границ массивов в компиляторе нет смысла, это приведет только к увеличению размера блока.
Включать оптимизацию кода имеет смысл всегда – у меня нет идей, по которым этого не следовало бы делать.
Опция генерация отладочной информации нужна только на этапе отладки блока, после проверок ее можно отключить, уменьшив размер блока.
Также можно отметить, что максимально увеличив размер кода, за счет использования этих опций, добиться затруднения анализа сгенерированного кода невозможно, так как все вставки легко опознаются и отфильтровываются.
Оцените статью!