VVWVV
12.05.2017, 18:22
TDW RScan
Описание
Многие, я думаю, замечали при компиляции около значения использования стека появляется сообщение, говорящее о том, что в скрипте находится рекурсия. Выявить её достаточно проблематично, поскольку необходимо проверять каждую вложенную функцию, что довольно долго. По этой причине и была разработана библиотека-сканер для поиска рекурсий в скрипте.
Документация
Как говорилось выше, основная функциональность библиотеки - поиск рекурсий. Библиотека проверяет все вложенные функции, а также функции вложенные во вложенные функции и т.д., пока не найдёт рекурсию. Количество уровней вложенности ограничено. Это делается для того, чтобы увеличить скорость работы сканера. Тем не менее библиотека представляет возможность изменить данное значение, определив макрос RSCAN_MAX_NESTED_LEVEL до включения библиотеки. Максимальное значение для уровня вложенности - 128. Значение по-умолчанию и рекомендуемое - 32.
Название функции
Описание
RScan_Run
Функция принимает необязательный параметр - адрес функции. Данная функция запускает и инициализирует сканер. Если был передан адрес, то функция запустит сканер только для этого адреса, т.е. другие функции не будут просканированы.
forward public func1();
forward public func2();
main() {
RScan_Run();
goto ___avoid_recursion; // избежать вызов рекурсии
func1();
___avoid_recursion:
}
func1() {
func2();
}
func2() {
func1();
}
addressofex
Дополнительная функция для определения адреса абсолютно любой функции. Принимает вызов функции.
addressofex(somefunc(0,0));
Библиотека имеет зависимость от amx_assembly (http://pro-pawn.ru/showthread.php?15075), однако в скором времени я попытаюсь сделать её автономной.
Скачать
github (https://github.com/TDW-org/samp-include-rscan)
Установка
Перейдите в репозиторий на github (ссылка выше).
Для скачивания на открывшейся странице нажмите на кнопку "Clone or download" (зелёного цвета) и в открывшемся меню - "Download ZIP".
Все файлы библиотеки перемести в папку '/pawno/includes/'.
Скомпилировать изменённые вами скрипты.
Автор: VVWVV (http://pro-pawn.ru/member.php?4348)
Распространяется по лицензии ZLIB.
Описание
Многие, я думаю, замечали при компиляции около значения использования стека появляется сообщение, говорящее о том, что в скрипте находится рекурсия. Выявить её достаточно проблематично, поскольку необходимо проверять каждую вложенную функцию, что довольно долго. По этой причине и была разработана библиотека-сканер для поиска рекурсий в скрипте.
Документация
Как говорилось выше, основная функциональность библиотеки - поиск рекурсий. Библиотека проверяет все вложенные функции, а также функции вложенные во вложенные функции и т.д., пока не найдёт рекурсию. Количество уровней вложенности ограничено. Это делается для того, чтобы увеличить скорость работы сканера. Тем не менее библиотека представляет возможность изменить данное значение, определив макрос RSCAN_MAX_NESTED_LEVEL до включения библиотеки. Максимальное значение для уровня вложенности - 128. Значение по-умолчанию и рекомендуемое - 32.
Название функции
Описание
RScan_Run
Функция принимает необязательный параметр - адрес функции. Данная функция запускает и инициализирует сканер. Если был передан адрес, то функция запустит сканер только для этого адреса, т.е. другие функции не будут просканированы.
forward public func1();
forward public func2();
main() {
RScan_Run();
goto ___avoid_recursion; // избежать вызов рекурсии
func1();
___avoid_recursion:
}
func1() {
func2();
}
func2() {
func1();
}
addressofex
Дополнительная функция для определения адреса абсолютно любой функции. Принимает вызов функции.
addressofex(somefunc(0,0));
Библиотека имеет зависимость от amx_assembly (http://pro-pawn.ru/showthread.php?15075), однако в скором времени я попытаюсь сделать её автономной.
Скачать
github (https://github.com/TDW-org/samp-include-rscan)
Установка
Перейдите в репозиторий на github (ссылка выше).
Для скачивания на открывшейся странице нажмите на кнопку "Clone or download" (зелёного цвета) и в открывшемся меню - "Download ZIP".
Все файлы библиотеки перемести в папку '/pawno/includes/'.
Скомпилировать изменённые вами скрипты.
Автор: VVWVV (http://pro-pawn.ru/member.php?4348)
Распространяется по лицензии ZLIB.