A2 & Oberon GOOGLE trans to English      Помощь      Поиск      Пользователи  Файловый архив


 Страниц (1): [1]   

> Описание: Опции компилятора
BohdanT Администратор
Отправлено: 15 Октября, 2008 - 23:53:50
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Глянул, что у компилятора есть куча опций, а кто то разбирался с ними?
Вот например оптимизация, дает что либо или просто так для красоты?
А некоторые непонятные, например BigEndian, что это такое?
Вроде разобрался
http://ru.wikipedia.org/wiki/%D0...1%82%D0%BE%D0%B2
		IF ch = "s" THEN pOpt := pOpt / {PCM.NewSF}
ELSIF ch = "e" THEN pOpt := pOpt / {PCM.ExtSF}
ELSIF ch = "n" THEN pOpt := pOpt / {PCM.NoFiles}
ELSIF ch = "f" THEN pOpt := pOpt / {PCM.Breakpoint}
ELSIF ch = "o" THEN pOpt := pOpt / {PCM.NoOpOverloading} (* do NOT allow operator overloading *)
ELSIF ch = "N" THEN cOpt := cOpt / {PCM.NilCheck}
ELSIF ch = "c" THEN pOpt := pOpt / {PCM.CacheImports}
ELSIF ch = "x" THEN cOpt := cOpt / {PCM.ArrayCheck}
ELSIF ch = "a" THEN cOpt := cOpt / {PCM.AssertCheck}
ELSIF ch = "z" THEN cOpt := cOpt / {PCM.FullStackInit}
ELSIF ch = "b" THEN pOpt := pOpt / {PCM.BigEndian}
ELSIF ch = "." THEN DEC(i); SubString(options, i, extension)
ELSIF ch = "p" THEN SubString(options, i, ignore); (* Skip prefix for input filenames (only as global option) *)
ELSIF ch = "P" THEN SubString(options, i, prefix); (* Prefix for output filenames *)
ELSIF ch = "d" THEN SubString(options, i, dest)
ELSIF ch = "D" THEN SubString(options, i, dump)
ELSIF ch = "O" THEN cOpt := cOpt / {PCM.Optimize}
ELSIF ch = "F" THEN SubString(options, i, objF)
ELSIF ch = "W" THEN pOpt := pOpt / {PCM.Warnings}
ELSIF ch = "S" THEN pOpt := pOpt / {PCM.SkipOldSFImport}
ELSIF ch = "M" THEN pOpt := pOpt / {PCM.MultipleModules}
ELSIF ch = "A" THEN cOpt := cOpt / {PCM.AlignedStack}
 
 Top
sage Администратор
Отправлено: 16 Октября, 2008 - 03:12:59
Post Id


Full Member


Покинул форум
Сообщений всего: 218
Дата рег-ции: Июнь 2008  
Откуда: Киев, Украина
Репутация: 0




BohdanT пишет:
Глянул, что у компилятора есть куча опций, а кто то разбирался с ними?
Да, некоторые даже использую, когда надо компилировать из командной строки с помощью PC.Compile Хорошо
S и s часто бывают полезны, обозначают пропускать старый символьный файл и генерировать новый соответственно Хорошо
 
 Top
neuf
Отправлено: 12 Февраля, 2009 - 17:22:27
Post Id


Junior Member


Покинул форум
Сообщений всего: 63
Дата рег-ции: Авг. 2008  
Откуда: Калуш, Ивано-Франковская обл., Украина
Репутация: 0




Вот еще из PCM.Mod:
		(** code generator options *)
ArrayCheck* = 0; (* x - perform array boundary checks *)
OverflowCheck* = 1; (* v - perform overflow check *)
NilCheck* = 2; (* N - explicit hard-coded nil checks *)
TypeCheck*= 3; (* t - perform type checks *)
PtrInit* = 5; (* p - initialize pointers to NIL *)
AssertCheck* = 6; (* a - evaluate asserts *)
Optimize* = 13;
FullStackInit* = 20; (* z - clear all values on stack *)
AlignedStack*=21; (* A - generate code with stack alignment for unix Aos *)

ExportDefinitions* = 30;
UseDefinitions* = 31;

(** parser options *)
NewSF* = 16; (* s - generation of new symbol file allowed *)
ExtSF* = 17; (* e - generation of extended symbol file allowed *)
Breakpoint* = 18; (* f - find position in code *)
CacheImports* = 19; (* c - Cache imported modules *)
NoFiles* = 21; (* n - don't generate files, parse only*)
NoOpOverloading* = 22; (* o - do NOT allow operator overloading *)
BigEndian* = 23; (* b - generate big endian code, makes only sense together with ARM backend *)
Warnings* = 24; (* W - display warnings *)
SkipOldSFImport* = 25; (* S - skip old symbol file import in PCOM.Export, avoids compiler error when migrating to new object file *) (* ug *)
MultipleModules*= 26; (* M - allow compilation of multiple modules within one file *)
 
 Top
neuf
Отправлено: 04 Июля, 2009 - 10:45:00
Post Id


Junior Member


Покинул форум
Сообщений всего: 63
Дата рег-ции: Авг. 2008  
Откуда: Калуш, Ивано-Франковская обл., Украина
Репутация: 0




Опция M позволяет компилировать один исходник, содержащий несколько модулей. Например:
MODULE prM1;

PROCEDURE Add*(a,b:LONGINT):LONGINT;
BEGIN
RETURN a+b
END Add;
END prM1.

MODULE prM2;
IMPORT KernelLog,prM1;
PROCEDURE Go*;
BEGIN
KernelLog.Int(prM1.Add(362,412),10);KernelLog.Ln
END Go;
END prM2.

PC.Compile \M prM1M2.Mod~
SystemTools.Free prM2~
prM2.Go~

Богдан как-то предлагал при написании компонентов сразу включать в модуль тестовую процедуру для них. По-моему, тест удобно делать в виде отдельного модуля, включенного в исходник с тестируемым компонентом.
 
 Top
lit-uriy Супермодератор
Отправлено: 06 Июля, 2009 - 09:44:34
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




neuf пишет:
Богдан как-то предлагал при написании компонентов сразу включать в модуль тестовую процедуру для них.
Вот есть такой файл:
/trunk/source/Oberon.Execution.T est
в нём куча модулей с одинаковым имененм, интересно как он используется?
 
 Top
neuf
Отправлено: 19 Июля, 2009 - 10:43:07
Post Id


Junior Member


Покинул форум
Сообщений всего: 63
Дата рег-ции: Авг. 2008  
Откуда: Калуш, Ивано-Франковская обл., Украина
Репутация: 0




lit-uriy пишет:
Вот есть такой файл:
/trunk/source/Oberon.Execution.T est
в нём куча модулей с одинаковым имененм, интересно как он используется?
Он используется для тестирования работы компилятора, вернее, для тестирования работы скомпиленого модуля. Кроме того, есть еще Oberon.Compilation.Test, который собственно проверяет этап компиляции. И там, и там есть тесты с положительным и отрицательным результатом, что указано в комментарии перед каждым модулем. Думаю, не проблема добавлять собственные тесты. А используется все это в PCTest.Mod, там в конце файла есть примеры запуска тестов. Здесь это все работает не через опцию \M, а с использованием процедуры PC.Module, которая компилирует модуль с заданной позиции ридера в файле.
 
 Top
lit-uriy Супермодератор
Отправлено: 19 Июля, 2009 - 14:55:32
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




neuf пишет:
что указано в комментарии перед каждым модулем.
Т.е. строки типа:
negative: simple halt in global procedure
Не рассматриваются компилятором?

Я подумал, что negative: - какая-то специальная директива
 
 Top
neuf
Отправлено: 19 Июля, 2009 - 15:31:01
Post Id


Junior Member


Покинул форум
Сообщений всего: 63
Дата рег-ции: Авг. 2008  
Откуда: Калуш, Ивано-Франковская обл., Украина
Репутация: 0




lit-uriy пишет:
Т.е. строки типа:
negative: simple halt in global procedure
Не рассматриваются компилятором?

Я подумал, что negative: - какая-то специальная директива
Нет, файлы с расширением Test - это не совсем обычные модули и компилируются они не PC.Compile, а PCTest.Compile, а он имеет свои правила. В конце-концов он вызывает PC, но натравливая компилятор только на куски текста. Небольшой модуль, там несложно разобраться. Служит, как я уже говорил, только для тестирования компилятора.
 
 Top
BohdanT Администратор
Отправлено: 03 Августа, 2009 - 15:47:39
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




lit-uriy пишет:
neuf пишет:
Богдан как-то предлагал при написании компонентов сразу включать в модуль тестовую процедуру для них.
Вот есть такой файл:
/trunk/source/Oberon.Execution.T est
в нём куча модулей с одинаковым имененм, интересно как он используется?


Revision: 2461
Author: pboenhof

Date: 15:23:36, 3 серпня 2009 р.
Message:
Adding PET support to the (Compiler) Test Suite. .Test-files will be opened in PET and get a Test button to run the tests. Default flags are "\e \r".
Flags are:
\e Execute the tests (not only compile)
\r Run in regression mode. Specifying a regression file is required.
Specify the regression file with "$Regression: regression-file$" somewhere in your .Test-file to use "regression-file" as the place to store the regression testing information.
----
Modified : /trunk/source/Configuration.XML
Modified : /trunk/source/PCTest.Mod
Modified : /trunk/source/TestSuite.Mod
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« ActiveOberon »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Locations of visitors to this page
[Valid RSS]

RSS

Valid CSS!


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0169]     [ Gzipped ]