Інструкція з використання програми¶
Компіляція¶
Приклад використання програми¶
Наприклад, маємо вихідний код:
#file.src
function mul(x,y)
R = x*y;
return R;
endfunc;
read j;
i = 5*mul(j,2);
print i;
Компілюємо:
$ ./myl file.src
pyCompiler 1.0
-------------------
В директорії з вихідним кодом з’явився файл з такою-ж назвою, але з розширенням .bin з правами на виконання (+x).
Це і є виконавчий файл програми, в чому ми можемо переконатися, запустивши його:
$ ./file.bin
5
50
Параметри командного рядка¶
Виконавчий файл - ./myl
В загальному випадку для компіляції файлу file.src з вихідним кодом потрібно виконати таку команду:
$ ./myl /path/to/file.src
Після цього, якщо не задані інші параметри, в директорії з вихідним кодом з’явиться бінарний файл file.bin, який є виконавчим.
Для використання особливих опцій при компіляції ви можете вказати такі параметри:
- -O0 - вимкнення вбудованої оптимізації
- -l - зберігання результатів лексичного аналізу в файл .lex
- -s - зберігання результатів синтаксичного аналізу в файл .synt
- -A - зберігання файлу з програмою на асемблері
- -L - створення файлу лістингу
- -n - вимкнення оптимізації при генерації об’єкних файлів (не передається -O0 до nasm)
- -v - розширений вивід коментарів та етапів роботи при компіляції
- -a - вмикання всіх опцій -slAL одночасно
Вимкнення оптимізації¶
Не рекомендується, але може буди корисним при відлагоджуванні програми, щоб подивитись чистий код, який видає транслятор. Він буде містити багато безглуздих конструкцій, таких як:
push eax
push ebx
pop eax
pop ebx
або таких:
mov eax,eax
також можуть бути неоптимальні конструкції як:
mov eax, 1
push eax
які оптимізуються транслятором до:
push dword 1
та інші випадки.
Вмикання проміжних файлів¶
Якщо передати опцію -a, компілятор створить в директорії з вихідним кодом папку build, в якій будуть збережені всі проміжні файли:
- Лексичного аналізу .lex
- Синтаксичного аналізу .synt
- Пошуку змінних та строкових літералів .stat
- Файл згенерованого коду на мові асемблеру .asm
- Лістинг .lst
За допомогою цих файлів можна дізнатися про всі етапи обробки вихідної программи, а також подивитись дерево синтаксичного розбору у файлі .synt