Среда программирования на AutoLISP в графической системе AutoCAD (Справочник), страница 17

COMPSTACK=<размер>                      (только для среды компилятора)

Переменная задает размер структуры стека для поддержки выполнения скомпилированных функций. Значение по умолчанию 800 байтов для базового AUTOlisp и 400 байтов для расширенного AutoLISP.

COMPINIT=<спецификация файлов>                      (только для компилятора)

Переменная должна указывать местораспложение и имя файла компилятора ACOMP.INI.

5.3. Процедура компиляции

Для вызова компилятора необходимо задать коммандную строку в следущем формате:

Acomp [-e] lspfilel [lspfilrn]…[-obinfile]

Расширение файлов не указывется. По умолчанию используются следуующие расширения:

.lsp-    исходные файлы на LISP,

.bi2- результирующие скомпилированные файлы для стандартного AutoLISP.                           

.bi4-   результирующие скомпилированные файлы для AutoLISP.

Ключи определяют следующее:

-о-      позволяет определить файл для скомпилированного двоиного результата.Если ни один файл не определен с использованием этой опции, результирующая программа будет помещена в файл LSPFILEI.B12 или LSPFILE.B14, соответственно.

-е-       используется для компиляции в расширенном AutoLISP. При отсуствии опции компиляции будет выполнятся для стандартного AutoLISP.

5.4.Специфические функции для работы с паамятью

Несколько функций, описанных в этом разделе, позволяют пользователям управлять распределением памяти явным образом. В первую очередь это касается  базового варианта  AutoLISP, как в среде стандартного AutoLISP, так и в среде компилятора  AutoLISP.

(vmon)

обеспечивает постраничную организацию виртуальной памяти. При таком  режиме работы  AutoLISP удаляет из памяти редко используемые  функции во временный файл и возвращает их обратно  при их необходимости. Такой процедуре  могут  подвергаться  только функции, объявленные после использования  функции (VMON). Эта функция актуальна, в первую очередь, для базового AutoLISP и может стоять первой в файле ACAD.LSP.

Для освобождения  памяти, занятой функцией  ХХХ  или переменной ХХХ, используйте функцию (SETQ XXX NIL).

В стандартном  AutoLISP  имеется переменая  АТОМLISТ, содержащая  список  всех определенных  функций, но она  доступна  не во всех средах  AutoLISP (в частности, несовместима  с VMON), поэтому  использовать ее не рекомендуется..                             

(gc)

запускает процедуру “сбора мусора” – все  освободившееся пространство  объявляется  свободным.

(alloc <число>)

устанавливает  размер сегмента, равный <числу>  “нардов” (единиц памяти) и возвращает предыдущую установку.

(expand <число>)

позволяет распределить пространство нодов. Аргумент <число> задает количество требуемых сегментов. Функция возвращает реально выделенное количество сегментов,  которые  получены из “хипа”  (“кучи”). Если весь хип будет использован, вероятно получение  ошибки “Исчерпано строковое пространство”.

(mem)

высвечивает текущее сообщение памяти, используемой AutoLISP и возвращает nil.

Последнии три функции рекомендуются для импользования только очень опытными праграмистами.

5.5. Специфика работы с компилирванными программами

Исползование локальных переменных

Главное семантеческое отличие скомпелированных програм от интерпретируемых состоит в обработке глобальных и локальныхпеременных. Переменная считается локальной, если объявление и/или модификация переменной происходит внутри функции (или внутри выражения lambda)? Вкоторой эта переменная включена в список формалных параметров (либо до, либо после знака ‘/’).

Вначале компилятор принимает по умолчанию, что все переменные являются локальными.Если компилятор встречает глобальную ссылку к переменной , он объявляет ее как специальную переменную и все соответствующие ссылки к таким переменным будут генерировать инструкции для нелокальных ссылок.