CCI - точно нужен?
От: matumba  
Дата: 22.11.10 18:32
Оценка:
Скачал их последний билд (примерно неделю-две назад), скомпилил пример HelloCodeModel — ровно то, что будет делать компилятор. Выход получился (hello.exe), но он не работает:
"Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'hello.exe' or one of its dependencies".

Закономерный вопрос: а можно ли им пользоваться вообще? Понимаю, что проблема может быть в одном байте, но где гарантия, что таких "неправильных байтов" не разбросано по остальным местам?

И попутный вопрос: а много ли вам нужно от CCI? Сгенерировать MSIL можно и руками, а то и вообще *.il исходник скармливать ilasm'у.
Re: CCI - точно нужен?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.10 19:56
Оценка:
Здравствуйте, matumba, Вы писали:

M>Скачал их последний билд (примерно неделю-две назад), скомпилил пример HelloCodeModel — ровно то, что будет делать компилятор. Выход получился (hello.exe), но он не работает:

M>"Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'hello.exe' or one of its dependencies".

Не знаю. Я качал, компилил — все работало. Дума, что ты что-то не так сделал. Или они багу допустили.
Создай им Исьюс и все выяснится.

Потом HelloCodeModel — это, вроде бы, пример не для CCI Metadata который хотим использовать мы, а пример для CCI AST (более высокоуровневого API, которое, скорее всего для нас не нужно).

M>Закономерный вопрос: а можно ли им пользоваться вообще? Понимаю, что проблема может быть в одном байте, но где гарантия, что таких "неправильных байтов" не разбросано по остальным местам?


Это конечно никто гарантировать не может. Но "нерабочих байтов" Emit-е просто не прилично много. Плюс есть системные ошибки.

M>И попутный вопрос: а много ли вам нужно от CCI? Сгенерировать MSIL можно и руками, а то и вообще *.il исходник скармливать ilasm'у.


Руками — это ты хорошо пошутил. Видил объем этого CCI Metadata? Вот это все придется написать своими руками.
Короче, работы и так море. И взваливать на себя еще одну объемную задачу — это не конструктивно.

Тут вопрос может только ставиться так. CCI Metadata или что-то другое. Если в МС стки решатся и сделают управляемый компилятор C#-а, то возможно можно будет использовать его качестве баэкэнда. Так же можно поглядеть на Mono Cecil. Мои наблюдения показали что CCI Metadata более зрелый продукт.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: CCI - точно нужен?
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.10 19:59
Оценка:
Здравствуйте, matumba, Вы писали:

M>И попутный вопрос: а много ли вам нужно от CCI? Сгенерировать MSIL можно и руками, а то и вообще *.il исходник скармливать ilasm'у.


Поясню... Дело в том, что в задачи компиляторах кроме порождения MSIL-а так же входит чтение метаданных из сборок на которые имеются ссылки в проекте. А это значит, что нужно уметь читать сборки и извлекать из них эти самые метаданные.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: CCI - точно нужен?
От: Denom Украина  
Дата: 22.11.10 21:07
Оценка:
Здравствуйте, matumba, Вы писали:

M>Скачал их последний билд (примерно неделю-две назад), скомпилил пример HelloCodeModel — ровно то, что будет делать компилятор. Выход получился (hello.exe), но он не работает:

M>"Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'hello.exe' or one of its dependencies".

Под какую платформу собирал x32 или x64 и под какую запускал?
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[2]: CCI - точно нужен?
От: matumba  
Дата: 23.11.10 07:49
Оценка:
Здравствуйте, Denom, Вы писали:

D>Под какую платформу собирал x32 или x64 и под какую запускал?


x86 .NET 4; Причём этот же пример, но из "простого" СИСИАЙ (где руками эмитятся инструкции) работает! (можете даже сравнить исходники — почти 1:1)

Здравствуйте, Vlad2, Вы писали:

> Потом HelloCodeModel — это, вроде бы, пример не для CCI Metadata

> так же входит чтение метаданных из сборок

Да, Влад, спасибо, теперь разобрался!
Я посмотрел их сорсы — это ппц. Чисто "микростиль микрософта" — мильён микроклассов под каждый пук. Генерация PE особо впечатлила. (иронизирую, конечно)
Ну, если ничего лучше этого нет, пусть будет ЦЦИ.
Re[3]: CCI - точно нужен?
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.11.10 14:43
Оценка:
Здравствуйте, matumba, Вы писали:

M>Я посмотрел их сорсы — это ппц. Чисто "микростиль микрософта" — мильён микроклассов под каждый пук. Генерация PE особо впечатлила. (иронизирую, конечно)


Да, писали это дело настоящие индейцы архитекторы. Все черех интерфейсы, фабрики и т.п. Разбираться в таком коде не просто конечно.

M>Ну, если ничего лучше этого нет, пусть будет ЦЦИ.


К сожалению выбор не большой. Если МС перепишет компилятор шарпа на C# и откроет его API, то возоможно его можно будет вместо бэкэнда использовать. Но на сегодня выбор между CCI Metadata и Cecil. И похоже Cecil довольно сыроват.

Я экспериментировал CCI Metadata и первые впечатления были положительными. Недостающих функций я не обнаружил.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.