IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Компиляторы AdaMagic и GNAT CCG, Ada -> C, C++
сообщение
Сообщение #1


Большевик–концептуал
***

Группа: Пользователи
Сообщений: 194
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: bu_gen@octagram.name
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  1  +


Был давно такой интересный компилятор у производителя SofCheck. 5 лет назад SofCheck и AdaCore слились, а компилятор куда-то потерялся. У AdaCore его даже не купить. Он, конечно, поддерживает более старый стандарт Ada 95 с подмножеством Ada 2005, но иногда даже и такой компилятор может пригодиться.

Этот компилятор неожиданно был найден у другого производителя, который у адаистов вообще не на слуху: MapuSoft. У них можно запросить демку и скачать, потом они впаривают какой-то AppCOE на базе Eclipse, а если оно не нужно, то приходится распаковывать архив из архива из архива. Я постарался вытащить из AppCOE собственно AdaMagic и отбросить шелуху. Не имея представления о том, как он должен был выглядеть, возможно, не во всём корректно. И некоторых файлов вроде adabgen.inf и adacgen.inf просто нет.

Замечание от 13 июня 2018: нет, всё же IDE полезно иметь, см. тему дальше.

Таким образом, это компилятор Ada -> C, C++, запускается он на Windows и Linux, а через эмуляторы — и на других платформах. Сценарий использования из коробки — это Ada -> C, C++ -> GCC, но в GCC есть GNAT, который лучше, а AdaMagic интерес, как я понимаю, представляет, когда нужно собирать под платформы, не поддерживаемые GNAT, вроде Asm.js и Эльбрус, соответственно, научиться им пользоваться нетривиально и зависит от потребностей. Может понадобиться писать свой рантайм или не использовать те возможности языка, под которые рантайм не написан.

Для скачивания требуется регистрация на форуме.

AdaMagic.2016-07-22.7z (191 Мб)


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Большевик–концептуал
***

Группа: Пользователи
Сообщений: 194
Пол: Мужской
Реальное имя: Иван Левашев
Jabber: bu_gen@octagram.name
Skype: i.levashew
QQ: 3152538431
WeChat
Ада: Сторонник
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик
Turbo Pascal: Установлен

Репутация: -  1  +


Немного о том, как установить:
Распаковать куда-нибудь, далее обозначено многоточием.
Добавить в PATH …\AdaMagic\windows\bin
Установить переменную среды ADA_MAGIC=…\AdaMagic\windows
Подредактировать …\AdaMagic\windows\SITE\rts_path и …\AdaMagic\windows\SITE\config

Дальше тяжело без документации. В PDF мало. Решал эту проблему. Вот, что удалось выяснить:

AdaMagic умел работать в 3х режимах, промежуточное представление, которое нужно компилировать дальше в машинный код собственными усилиями, либо в C/C++, либо в Java. И всё это — AdaMagic. Один поставщик (Intermetrics, AverStar, SofCheck) раздавал лицензии разным компаниям под разные условия, и когда мы берём чей-то компилятор, это адаптация AdaMagic.

Вот у MapuSoft именно второй сценарий, а у ObjectAda — первый и третий, но нет второго. ObjectAda однажды устроил раздачу бесплатных версий своего компилятора (ObjectAda 7.2 Special Edition), я себе такой сохранил, впрочем, в Интернете ещё можно найти, архив называется oa71sped.zip , и вот он пригодился. Свет проливается на то, как всё устроено. В частности, обнаруживается, что adacgen.exe — это переименованный adacomp.exe, а adabgen.exe — это переименованный adabuild.exe. А ещё в ObjectAda можно найти adacomp.inf и adabuild.inf, и если их переименовать и положить в …\AdaMagic\windows , то утилиты командной строки перестают ругаться. Правда, справка не вполне подходит. Так, в ObjectAda есть ключ -asm, что имеет смысл для компилятора для Windows, но не имеет смысла для конвертера в C/C++. Более правильная «документация» нашлась здесь: http://www.ada-auth.org/cpl/reports/ACATR048.txt Это отчёт на проверку соответствия стандарту языка Ада 95, а заодно он включает искомую документацию, хоть и старую, но сойдёт. Кстати, там всплывают ещё одни возможные имена: adacsrc и adacbuild, соответственно. Также частично удалось восстановить смысл новых ключей, глядя в код AppCOE.

Итого ключи adacgen (как представляющей наибольший интерес утилиты) получаются:

Сильно не понятные ключи (Показать/Скрыть)


Относительно понятные ключи (Показать/Скрыть)


Также оказалось полезно, что компилятор запоминает, с какими ключами собирались файлы, и пишет в файлы info. Например, Ada RTL для Windows собрана так:

COMPSW: adacomp SRC -m a -config ./config -config ./config -ke -xr -gc -O none -trace -eo +mr e -translate -pB -IXIL



Здесь по идее должен быть adacgen, а не adacomp, но не везде имя поменяли, и в данном случае в файлики штампуется оригинальное имя утилиты.

А вот ключи для компиляции демки судоку, собранной средствами AppCOE:

COMPSW: adacomp SRC -m a -config ./config -config ./config -ke -xr -gc -O none -trace -eo +mr e -translate -pB -IXIL



Поскольку AppCOE ставить не хочется, вот так вот и достаётся оттуда информация.

Экспериментировал с emscripten. Собралось 287 из 325 файлов Ada RTL. Остальное нужно портировать вручную. Там всякие функции получения системного времени, аргументов командной строки и т. п.

Так как заморачиваться этим на первых порах не хочется, хотелось предоставить какую-нибудь заглушку, чтоб компилятор сам не вызывался, и чтоб можно было с неполным рантаймом собирать. Оттранслировать в C++ и не дать автоматически транслировать дальше. Посмотреть в исходник, что там вызывается и написать заглушки.

Нашёл, как это делать:
Сначала каждый исходник нужно обработать adareg:
adareg Hello_World_2.ads


Звёздочки (adareg *.ads *.adb) тоже понимаются.

Потом конвертировать:

adacgen -c -cppn -cppe -ke -ki Hello_World_2.ads



Это сконвертирует исходник Ada в C++. Так нужно и для тел, и для спецификаций сделать. Чтобы в C, надо убрать "-cppn -cppe". Чтобы убрать проверки, можно добавить -s. Это уже становится не Ada, но всё ещё хотя бы язык с нормальной системой типов и модулей. Всё это нужно, чтобы хоть что-то запустить на момент, пока рантайм ещё не портирован и даже заглушек ещё нет.


--------------------
If you want to get to the top, you have to start at the bottom
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
OCTAGRAM   Компиляторы AdaMagic и GNAT CCG   31.01.2017 11:01
OCTAGRAM   Немного о том, как установить: Распаковать куда-ни…   10.02.2017 11:56
OCTAGRAM   Такер Тефт, основоположник этого компилятора, любе…   14.02.2017 6:56
OCTAGRAM   В блоге AdaCore с прошлого года появляются уже раз…   8.04.2018 6:15
OCTAGRAM   AdaMagic продолжает развиваться, только по второму…   13.06.2018 7:25
Allenadvom   Hello. And Bye.   24.09.2021 9:07
OCTAGRAM   Сейчас, когда начинают появляться деньги, возник в…   25.06.2019 22:44
Andrejkam   Я удалил это сообщение tsgbb   20.04.2023 0:37
RogelioDob   Regards for sharing this superb web-site.   29.12.2023 21:50
OCTAGRAM   Пытался на Эльбрусе запустить. Пока что помешала п…   23.06.2020 16:46
tukva   Кстати, исходники CCG (Common Code Generator), ест…   27.03.2021 16:00
Terryknole   давно хотел посматреть   23.04.2021 2:48
SportBKVerif   Есть большой выбор верифицированных свежих аккаунт…   27.05.2021 7:54
Terrysen   123   25.04.2021 20:04
SportBKVerif   Есть большой выбор верифицированных свежих аккаунт…   27.05.2021 7:55
SportBKVerif   Есть большой выбор верифицированных свежих аккаунт…   27.05.2021 7:55
Malcolmkep   Hello. And Bye.   19.01.2022 9:21
BorisRaw   Тут про Бали интересовались - считаю очень приличн…   28.03.2023 18:48
Terrysen   123   26.04.2021 2:30
Terrysen   123   26.04.2021 8:31
SportBKVerif   Есть большой выбор верифицированных свежих аккаунт…   27.05.2021 7:58
qcdigitalck   Hello, I believe octagram.name has so much room…   21.11.2022 8:12
SportBKVerif   Есть большой выбор верифицированных свежих аккаунт…   27.05.2021 7:53
SportBKVerif   Есть большой выбор верифицированных свежих аккаунт…   27.05.2021 7:57
Malcolmkep   Hello. And Bye.   30.12.2021 18:18
SportBKVerif   Есть большой выбор верифицированных свежих аккаунт…   27.05.2021 7:53
SportBKVerif   Есть большой выбор верифицированных свежих аккаунт…   27.05.2021 7:56
SportBKVerif   Есть большой выбор верифицированных свежих аккаунт…   27.05.2021 7:56
BorisMit   Очень хорошая идея tsgbb   21.04.2023 2:26
DavidBed   всё о заработке   11.06.2021 2:22
uxayosopiz   Isugamoz <a href="http://slkjfdf.net/…   11.06.2021 19:44
buy outdated promethazine codein   viagra generico receta   18.09.2021 18:10
allocvetymf   Добрый день! Цветочный салон АллоЦветы пред…   9.10.2021 14:23
buy cialis online canadian pharm   money online order save cialis   6.11.2021 12:33
JeremyBon   Остромир, мы берем без опыта и образования! …   28.11.2021 11:07
buy clamelle azithromycin 500mg   Pcn Without Apresrciption   5.12.2021 14:48
HaroldStarf   Reminds me of Georgia Peach. would love to get nau…   23.01.2022 20:53


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 22:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name