Galkov,
1) ждём-с...
2) + 3.*) попробую объяснить.
Я хочу попробовать сделать пакет gсс для hiasm. В качестве базы возьму wxWidgets, в качестве компилятора - GCC, для Win32 - из пакета MinGW, в (наполеоновских) планах - linux и pocketPC. В силу особенностей работы компилятора C++, возможно придётся делать внешнюю кодогенерацию (мне надо на основе sha делать набор cpp файлов, а потом одним махом их собирать посредством makefile).
Кодогенерация я хочу делать правильным образом (с генерацией двух файлов - cpp и h, а не так, как это сделано в пакете PocketPC)
Итого: схема рисуется как обычно в среде, а потом вызывается внешний кодогенератор, который и делает результриующий код и потом компилирует его.
Этот топик читают: Гость
Ответов: 5446
Рейтинг: 323
|
|||
карма: 1 |
|
Ответов: 3655
Рейтинг: 69
|
|||
iarspider писал(а): а потом вызывается внешний кодогенератор, который и делает результриующий код и потом компилирует его.И чем это лучше стандартного |
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
iarspider писал(а): В силу особенностей работы компилятора C++, возможно придётся делать внешнюю кодогенерациюТак надо обсуждать эти "особенности работы компилятора C++", а не "Разбор SHA файлов" И при необходимости адаптировать работу HiAsm с внешним компилятором. И чего-то аж не верится, что никсоиды могли сделать чего-то, что нельзя запустить из командной строки/файла Скажем так: я пока вообще не вижу проблем |
|||
карма: 9 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Вячеслав, а тем, что, видя всю схему, можно немножко оптимизировать код (например, не выделять if_else в отдельный класс, разбирать цепочку из case-ов, ...)
Galkov, поясняю: если в проекте более одного cpp-файла, то (afaik) их надо сначала поодиночке откомпилировать в o-файлы, а потом всем скопом уже линковать. Для облегчения этой работы придумали т.н. make-файлы, в которых просто указывается, какие файлы и как обрабатывать. Итого, проект состоит из (n >= 1) пар cpp/h файлов (1 для главной формы, остальные для контейнеров), плюс .rc файл(ы), и плюс makefile. Внешний кодогенератор читает схему, создаёт код (возможно, проводя некоторые оптимизации "на ходу") и далее вызывает make на свежесозданный makefile [size=-2]------ Добавлено в 17:47 Galkov, вот читаю твои посты в этой теме - и создаётся впечатление, что беседую с роботом: клац |
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
iarspider писал(а): Итого, проект состоит из (n >= 1) пар cpp/h файлов (1 для главной формы, остальные для контейнеров), плюс .rc файл(ы), и плюс makefileЭта кухня мне известна с незапамятных времен. Разве что следует напомнить, что make вместо build приведет к проблемам. И все же: Galkov писал(а): Скажем так: я пока вообще не вижу проблем- БЕЗ ВНЕШНЕГО КОДОГЕНЕРАТОРА |
|||
карма: 9 |
|
Ответов: 2125
Рейтинг: 159
|
|||
iarspider писал(а): Внешний кодогенератор читает схему, создаёт код (возможно, проводя некоторые оптимизации "на ходу") и далее вызывает make на свежесозданный makefileЗамечу, вряд-ли ты научишься определять, что какой-либо из контейнеров изменился, т.е. генерировать будешь всегда все файлы, т.е. они всё равно будут все компилироваться. Спрашивается - нафига городить огород из нескольких файлов, если их в таком случае можно запихнуть в один файл. Аналогично - нафига отдельные хедеры - объявить всё в начале файла, и дело с концом. |
|||
карма: 1 |
|
Ответов: 5446
Рейтинг: 323
|
|||
tsdima, вроде при изменении проекта id-ы всех его элементов остаются неизменными (ну, не считая добавленных и удалённых), так что определить, кто изменился, а кто - нет, я смогу очень просто: посчитаю контрольную сумму и сравню с сохранённой ( ведь мне никто не мешает иметь дополнительный файл с некоей вспомогательной информацией о проекте! ).
Galkov, вот тут мы вроде уже и договорились, что генерация cpp + make файлов (без написания meta-make, который бы по cpp делал makefile) с использованием штатных средств среды невозможна? |
|||
карма: 1 |
|
Ответов: 3655
Рейтинг: 69
|
|||
iarspider писал(а): а тем, что, видя всю схему, можно немножко оптимизировать код А стоит ли игра свеч Это повысит быстродействие Если повысит то насколько % |
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Вячеслав,
1. Наверняка 2. Должно 3. Не считал |
|||
карма: 1 |
|
Ответов: 3655
Рейтинг: 69
|
|||
iarspider писал(а): 3. Не считалТак я для этого и спрашивал Dilma писал что при работе со строками ХиАсм проигрывает С++ в 1000 раз. Если твой генератор несможет изменить это положение то оптимизация будет ничтожна. |
|||
карма: 0 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Вячеслав, я не ковырялся во внутренностях работы со строками в HiAsm, поэтому не могу сказать, почему такой проигрыш, и как следствие - будет ли он устранён при переходе на c++
|
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
iarspider писал(а): Galkov, вот тут мы вроде уже и договорились, что генерация cpp + make файлов (без написания meta-make, который бы по cpp делал makefile) с использованием штатных средств среды невозможна?Вы - не знаю о чем договорились. Мы, лично - такого не утверждали. Мы, лично - утверждали, у тебя вообще нет необходимости и вспоминать про ресурсы, при наличии HiAsm Если ты хочешь положить в ресурс то, что кладется туда сегодня А иного утверждения, как и его обоснования - не было в этом топике. Впрочем, iarspider, ну постарайся ты понятней писать... Даже ведь в этом посте - как-то не по русски все... Чтобы знать есть возможность, или нет, сделать ЭТО, надо знать содержимое ЭТОГО Ты же ни одного слова про ЭТО не сказал, но делаешь вывод, что мы договорились |
|||
карма: 9 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Galkov, ну куды уж понятнее-то?! Хочу сделать гибридный кодогенератор - основа от delphi, оптимизация if, case - от Web. Если брать за основу кодогенератор от Delphi, то вставка туда оптимизации чрезвычайно сложна, а если брать Web - то его скриптовая основа затрудняет использование классов.
Ладно, так как разговор опять уходит в никуда, попробую собрать мини-пакет для демонстрации задумки. |
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
iarspider, что значит в никуда
Вот Dilma задает вопрос а для чего утилита писалась?
Видимо потому, что удивительно ему, чем же возможности среды не устраивают. Ибо именно он тратил время на реализацию этих возможностей. И вот пока совершенно непонятно, где ты увидел проблему. Нет ее. Никто тебя не принуждает, насколько я понимаю, писать в makefile команды генерации файла ресурсов. Среда сама это сделает и сгенерирует allres.res, сообщи линкеру (используя высокое искусство создания makefile) о наличии такого файла - и всего делов Казалось бы. Проблема то в чем |
|||
карма: 9 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Сейчас генерация формы есть создание и расположение всех её элементов через код, я же хочу формы оформлять через ресурсные файлы и штамповать диалоги по шаблонам.
|
|||
карма: 1 |
|