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  +


Сейчас, когда начинают появляться деньги, возник вопрос, а по карману ли AdaMagic (aka AdaChanger)? Delphi по карману, GNAT Developer по карману, даже, может быть, с iOS всякими, если действительно захотеть.

Ответ от производителя получил

Цитата
I am sorry but we are not selling this product into Russia at this time. I will let you know if that changes.


Даже при желании мы на их финансовое состояние не повлияем никак. Можно не париться.

Тем временем обнаружил, что в adacgen.exe всё это время была довольно исчерпывающая информация, но IDA её не подхватывала, потому что плагин для чтения информации требует очень редкую msvcp100d.dll, с буквой d на конце, что значит debug, а debug версии этих библиотек не входят в состав перераспространяемых пакетов визуалки, вот и нет этого файла. После того, как скачал и подложил этот файлик, наступило прозрение. Там есть типы данных с именами полей, локальные переменные, и в IDA видно, что в таком-то регистре такая-то локальная переменная. Смысл всех ключей стал более менее понятен. В частности, загадочный -cppa банально значит включить всё, что связано с C++ (то же, что все остальные три ключа).

Опции adacgen (Показать/Скрыть)


Что касается собственно использования транслятора, удалось научиться делать некоторые трюки. Например, если просто делать объявленной процедуре pragma Import, то она и в Си выводе импортируется при помощи extern, но, возможно, под другим именем, ведь в Си нельзя одно от другого отвязать. А если написать Import с соглашением Intrinsic, то в Си не выводится extern, а транслятор начинает верить, что такая фунция всё же существует и генерирует код, ссылающийся на неё. Но если это всё же не настоящий intrinsic, то к тому, чтобы он появился, надо предпринять усилия. Написав pragma Import с оглашением Intrinsic для типа, можно дополнительным параметром указать строку "#include", которая будет вставляться в сишный вывод каждого модуля, зависящего от того, где такой хитрый тип объявлен. Сам тип использовать не обязательно, он может в private быть спрятан. Что-то другое, кроме #include, не работает, но и этого достаточно. Через эту щель удалось, например, подцепиться к atomic intrinsic для счётчиков ссылок. С ними возникла проблема, что AdaMagic указатели приводит к void*, а у этих atomic instrinsic поведение определяется именно тем, какой указатель передаётся. То есть, перегрузка по типу аргумента, не смотря на то, что в Си такого нет. Решилось тем, что я завернул atomic intrinsic в макрос, приводящий обратно к нужному типу. И написал для сишного макроса адское строго типизированное объявление. Строго типизированное объявление для того, что по сути является сишным макросом. Это ли не чудо. Используя этот трюк, я реализовал System.Atomic_Counters с тем же API, как в GNAT. Работает. Посмотрел все промежуточные файлы. Через AdaMagic, через сишный препроцессор всё проходит до уровня ассемблера, вся эта луковица разбирается до кочерыжки, и остаются машинные инструкции, делающие только то, что нужно.

Посмотреть можно здесь:

https://osdn.net/projects/referencing/scm/h…ments/tree/tip/

Кажется, самый сложный непортируемый трюк позади. Остаётся обычная Ada 95, на которой надо просто писать.


--------------------
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


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

 





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