Вверх ↑
Этот топик читают: Гость
Ответов: 5446
Рейтинг: 323
#31: 2007-05-18 16:39:30 ЛС | профиль | цитата
Galkov,
1) ждём-с...
2) + 3.*) попробую объяснить.

Я хочу попробовать сделать пакет gсс для hiasm. В качестве базы возьму wxWidgets, в качестве компилятора - GCC, для Win32 - из пакета MinGW, в (наполеоновских) планах - linux и pocketPC. В силу особенностей работы компилятора C++, возможно придётся делать внешнюю кодогенерацию (мне надо на основе sha делать набор cpp файлов, а потом одним махом их собирать посредством makefile).

Кодогенерация я хочу делать правильным образом (с генерацией двух файлов - cpp и h, а не так, как это сделано в пакете PocketPC)

Итого: схема рисуется как обычно в среде, а потом вызывается внешний кодогенератор, который и делает результриующий код и потом компилирует его.
карма: 1

0
Ответов: 3655
Рейтинг: 69
#32: 2007-05-18 17:07:58 ЛС | профиль | цитата
iarspider писал(а):
а потом вызывается внешний кодогенератор, который и делает результриующий код и потом компилирует его.

И чем это лучше стандартного
карма: 0

0
Ответов: 9906
Рейтинг: 351
#33: 2007-05-18 17:20:35 ЛС | профиль | цитата
iarspider писал(а):
В силу особенностей работы компилятора C++, возможно придётся делать внешнюю кодогенерацию

Так надо обсуждать эти "особенности работы компилятора C++", а не "Разбор SHA файлов"
И при необходимости адаптировать работу HiAsm с внешним компилятором.

И чего-то аж не верится, что никсоиды могли сделать чего-то, что нельзя запустить из командной строки/файла
Скажем так: я пока вообще не вижу проблем

карма: 9

0
Ответов: 5446
Рейтинг: 323
#34: 2007-05-18 17:47:34 ЛС | профиль | цитата
Вячеслав, а тем, что, видя всю схему, можно немножко оптимизировать код (например, не выделять if_else в отдельный класс, разбирать цепочку из case-ов, ...)

Galkov, поясняю: если в проекте более одного cpp-файла, то (afaik) их надо сначала поодиночке откомпилировать в o-файлы, а потом всем скопом уже линковать. Для облегчения этой работы придумали т.н. make-файлы, в которых просто указывается, какие файлы и как обрабатывать.

Итого, проект состоит из (n >= 1) пар cpp/h файлов (1 для главной формы, остальные для контейнеров), плюс .rc файл(ы), и плюс makefile. Внешний кодогенератор читает схему, создаёт код (возможно, проводя некоторые оптимизации "на ходу") и далее вызывает make на свежесозданный makefile

[size=-2]------ Добавлено в 17:47
Galkov, вот читаю твои посты в этой теме - и создаётся впечатление, что беседую с роботом: клац
карма: 1

0
Ответов: 9906
Рейтинг: 351
#35: 2007-05-18 17:49:20 ЛС | профиль | цитата
iarspider писал(а):
Итого, проект состоит из (n >= 1) пар cpp/h файлов (1 для главной формы, остальные для контейнеров), плюс .rc файл(ы), и плюс makefile

Эта кухня мне известна с незапамятных времен. Разве что следует напомнить, что make вместо build приведет к проблемам.
И все же:
Galkov писал(а):
Скажем так: я пока вообще не вижу проблем

- БЕЗ ВНЕШНЕГО КОДОГЕНЕРАТОРА
карма: 9

0
Ответов: 2125
Рейтинг: 159
#36: 2007-05-18 17:51:25 ЛС | профиль | цитата
iarspider писал(а):
Внешний кодогенератор читает схему, создаёт код (возможно, проводя некоторые оптимизации "на ходу") и далее вызывает make на свежесозданный makefile

Замечу, вряд-ли ты научишься определять, что какой-либо из контейнеров изменился, т.е. генерировать будешь всегда все файлы, т.е. они всё равно будут все компилироваться. Спрашивается - нафига городить огород из нескольких файлов, если их в таком случае можно запихнуть в один файл. Аналогично - нафига отдельные хедеры - объявить всё в начале файла, и дело с концом.
карма: 1

0
Ответов: 5446
Рейтинг: 323
#37: 2007-05-18 18:31:10 ЛС | профиль | цитата
tsdima, вроде при изменении проекта id-ы всех его элементов остаются неизменными (ну, не считая добавленных и удалённых), так что определить, кто изменился, а кто - нет, я смогу очень просто: посчитаю контрольную сумму и сравню с сохранённой ( ведь мне никто не мешает иметь дополнительный файл с некоей вспомогательной информацией о проекте! ).

Galkov, вот тут мы вроде уже и договорились, что генерация cpp + make файлов (без написания meta-make, который бы по cpp делал makefile) с использованием штатных средств среды невозможна?
карма: 1

0
Ответов: 3655
Рейтинг: 69
#38: 2007-05-18 18:44:19 ЛС | профиль | цитата
iarspider писал(а):
а тем, что, видя всю схему, можно немножко оптимизировать код

А стоит ли игра свеч
Это повысит быстродействие
Если повысит то насколько %
карма: 0

0
Ответов: 5446
Рейтинг: 323
#39: 2007-05-18 19:00:31 ЛС | профиль | цитата
Вячеслав,
1. Наверняка
2. Должно
3. Не считал
карма: 1

0
Ответов: 3655
Рейтинг: 69
#40: 2007-05-18 19:11:09 ЛС | профиль | цитата
iarspider писал(а):
3. Не считал

Так я для этого и спрашивал
Dilma писал что при работе со строками ХиАсм проигрывает С++ в 1000 раз.
Если твой генератор несможет изменить это положение то оптимизация будет ничтожна.
карма: 0

0
Ответов: 5446
Рейтинг: 323
#41: 2007-05-18 19:24:50 ЛС | профиль | цитата
Вячеслав, я не ковырялся во внутренностях работы со строками в HiAsm, поэтому не могу сказать, почему такой проигрыш, и как следствие - будет ли он устранён при переходе на c++
карма: 1

0
Ответов: 9906
Рейтинг: 351
#42: 2007-05-18 20:22:39 ЛС | профиль | цитата
iarspider писал(а):
Galkov, вот тут мы вроде уже и договорились, что генерация cpp + make файлов (без написания meta-make, который бы по cpp делал makefile) с использованием штатных средств среды невозможна?

Вы - не знаю о чем договорились.
Мы, лично - такого не утверждали.
Мы, лично - утверждали, у тебя вообще нет необходимости и вспоминать про ресурсы, при наличии HiAsm
Если ты хочешь положить в ресурс то, что кладется туда сегодня

А иного утверждения, как и его обоснования - не было в этом топике.

Впрочем, iarspider, ну постарайся ты понятней писать...
Даже ведь в этом посте - как-то не по русски все...
Чтобы знать есть возможность, или нет, сделать ЭТО, надо знать содержимое ЭТОГО
Ты же ни одного слова про ЭТО не сказал, но делаешь вывод, что мы договорились
карма: 9

0
Ответов: 5446
Рейтинг: 323
#43: 2007-05-19 13:08:52 ЛС | профиль | цитата
Galkov, ну куды уж понятнее-то?! Хочу сделать гибридный кодогенератор - основа от delphi, оптимизация if, case - от Web. Если брать за основу кодогенератор от Delphi, то вставка туда оптимизации чрезвычайно сложна, а если брать Web - то его скриптовая основа затрудняет использование классов.

Ладно, так как разговор опять уходит в никуда, попробую собрать мини-пакет для демонстрации задумки.
карма: 1

0
Ответов: 9906
Рейтинг: 351
#44: 2007-05-19 13:34:10 ЛС | профиль | цитата
iarspider, что значит в никуда

Вот Dilma задает вопрос
а для чего утилита писалась?

Видимо потому, что удивительно ему, чем же возможности среды не устраивают.
Ибо именно он тратил время на реализацию этих возможностей.

И вот пока совершенно непонятно, где ты увидел проблему.
Нет ее.
Никто тебя не принуждает, насколько я понимаю, писать в makefile команды генерации файла ресурсов.
Среда сама это сделает и сгенерирует allres.res, сообщи линкеру (используя высокое искусство создания makefile) о наличии такого файла - и всего делов

Казалось бы.
Проблема то в чем
карма: 9

0
Ответов: 5446
Рейтинг: 323
#45: 2007-05-19 18:46:25 ЛС | профиль | цитата
Сейчас генерация формы есть создание и расположение всех её элементов через код, я же хочу формы оформлять через ресурсные файлы и штамповать диалоги по шаблонам.
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)