Запуск Паррота
Этот файл сжато описывает существующий на данный момент ряд исполняемых файлов и для чего они предназанчены.
parrotparrot foo.pbc
или файл с ассемблерным кодом:
parrot foo.pasm
В последнем случае файл асемблируется во внутренний файл с байткодом и затем
непосредственно выполняется. Чтобы альтернативно создать файл с байткодом
на диске, используйте -o флаг:
parrot -o foo.pbc foo.pasm
Эта команда создает файл с байткодом с именем foo.pbc, но не выполняет его.
Все аргументы командной строки после имени файл (то есть остаток argv)
помещаются в SArray PMC, который передается программе в регистре P5.
Например:
parrot foo.pbc --foo_arg process_me.foo
PMC в регистре P5 будет иметь три строковый элемента: foo.pbc, --foo_arg, и
process_me.foo.
parrot имеет четыре различных диспетчера кодов операций: стандартный,
вычислимое goto, предразыменовывающий и JIT. По умолчанию используется
стандартный диспетчер или вычислимое goto, если ваш компилятор поддерживает
вычислимые переходы. Вы можете передать флаг -g parrot'у, чтобы
задействовать нормальный диспетчер, даже если вы используете вычислимое goto.
Предразыменовывающий диспетчер включается с помощью флага -P, JIT - с помощью
-j.
Предразыменовывающий диспетчер раньше работал только как разделяемая библиотека.
Это можно вернуть, если добавить #define DYNAMIC_OPLIBS в начало файла
interpreter.c и затем(для большинства платформ Unix):
make clean make shared LD_LIBRARY_PATH=blib/lib ./parrot -P foo.pbc
Вам не будут доступны цели автоматического тестирования после запуска
make shared.
parrot также имеет несколько флагов для отладки и трассировки; подробное
описание использования можно получить командой parrot -h.
make test скомпилирует все, что необходимо и запустит полный набор
стандратных регрессионных тестов, с возможностью отлаживать сборку
мусора/менеджер памяти. (Отладка включается либо передачей двоичному файлу
parrot флага --gc-debug, либо установкой переменной окружения PARROT_GC_DEBUG)
Чтобы просмотреть тесты более внимательно, запустите соответствующий тест в t/ каталоге:
perl -Ilib t/op/basic.t
Чтобы избежать сохранения копий всех .pasm и .pbc файлов, сгенерированных
тестами, установите значение переменной окружения POSTMORTEM в 0:
env POSTMORTEM=0 perl -Ilib t/op/basic.t ls t/op/basic*
Чтобы запустить makefile-тесты с различными диспетчерами, установите соответствующее значение переменной TEST_PROG_ARGS:
make test TEST_PROG_ARGS=-P # используется предразыменовывающий диспетчер
Для запуска индивидуальных тестов, установите переменную окружения TEST_PROG_ARGS:
env TEST_PROG_ARGS=-j perl -Ilib t/op/basic.t
Чтобы прогнать все тесты с использованием всех имеющихся диспетчеров, воспользуйтесь целью ``fulltest'':
make fulltest
make quicktest идентично make test, за искслючением некоторых шагов, которые
не являются необходимыми в большинстве случаев, что позволяет получить
значительный выигрыш в скорости. Эта цель предназначена для быстрой проверки во
время разработки, снижая преграды для проверки тестов. make quicktest следует
выполнять перед отправкой патчей, чтобы проверить их действие.
Вместо перекомпиляции файлов .pasm в файлы .pbc, каждый раз когда выполняются
тесты, make quicktest пытается увидеть идентичен ли файл .pasm тестe. И если
это так, то используется сгенерированный ранее файл .pbc.
Эта опция первоначально появилась, когда assemble.pl использовался как
главный асемблер Паррота, и асемблирование доминировало по времени в наборе
тестов. Сейчас, из-за того что assemble.pl больше не используется, выгода от
использования make quicktest стала намного меньше, и в будуем эта цель может
исчезнуть.
ПРЕДУПРЕЖДЕНИЕ: make quicktest может потерпеть неудачу в следующих ситуациях:
- цель вызвана перед тем, как генерирование .pbc файлов было завершено; - формат .pbc файлов был изменен; - нумерация кодов операций, используемая в тестах была изменена; - ассемблер изменил поведение, что может сказаться на его выводе в ходе тестирования
Если make quicktest не работает, всегда можно вернуться к make test.
make quickfulltest может использоваться для прогона полного набора тестов на
всех доступных диспетчерах. На самом деле это не так долго, так как
гарантируется многократное использование *.pbc файлов после завершения первого
прогона тестов.