· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› Header converters: to be or not to be?

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Ноя 1, 2003 00:11:41

Я поискал на форуме ссылки на такие посты, но нашёл только один, да и то пустой.

Вопрос такой:
Где взять хороший конвертер (или не очень, но с исходником, что б можно было дальше развить) заголовочных файлов C в .inc? И модулей ObjectPascal опять же в заголовочный файл Ассемблера.

Другой вопрос, что какое-нибудь средство, пригодное, для обработки текстов рядовому ассемблерщику просто необходимо. Поскольку на асме это, разумеется, возможно, но крайне муторно. ;) А задачи, в которых это требуется, периодически возникают. Те же хедеры сконвертить под используемый ассемблер. ;) Кстати, на перле это чаще всего можно сделать одной строчкой...

bsl_zcs сказал это ещё в июле, а есть ли где-нибудь пример скрипта такого или ссылка, где можно найти такое или как сделать самому на Perl?

Очень бы хотелось, а то вручную конвертировать файлы из PlatformSDK слишком долго!


Дата: Ноя 1, 2003 01:25:21

Сабж = FF


Дата: Ноя 1, 2003 01:46:58

Сабж = FF
Прошу прощения, а что это значит?

И ещё вопрос: почему не всегда работают кнопочки?


Дата: Ноя 1, 2003 01:49:46

2B OR (NOT 2B) = FF
Какие кнопочки?


Дата: Ноя 1, 2003 02:04:40

Кнопки изменения стиля текста в редактируемом сообщении.

И всё же, что это означает?
2B OR (NOT 2B) = FF

И как насчёт темы?


Дата: Ноя 1, 2003 02:16:48

Так 2B or not 2B как раз в теме :)
Если серьёзно, для простых H 2 inc существует утилита.
Есть в пакете MASM.
Для сложных не годится, приходится править руками.


Дата: Ноя 1, 2003 02:43:08 · Поправил: IceStudent

А, теперь понял :)

Насчёт h2inc — я её давно приметил, но быстро обломался!

Написал простую, конвертирует константы, определения типов, комментарии (:)), простые структуры и ещё кой-чего.
Но я замучился её писать, а хотелось бы ещё расшширять, чтобы читала новые определения из чего-то (базы или уже готового файла заголовочного, или чтоб пользователь (я) вводил, когда запнётся).

Я понимаю, что интелект человека не заменишь, тем более, программиста, но меня увлекла мысль о Perl, которую высказал bsl_zcs. Ведь можно такое сделать?

Так, сегодня, судя по всему, желающих нема.
Ладно, но я этого так не оставлю...


Дата: Ноя 1, 2003 05:26:27

Asterix, не подскажешь?


Дата: Ноя 1, 2003 06:31:23

На Perl можно написать всё что угодно, но я конвертацией хидеров не занимался ;-)


Дата: Ноя 1, 2003 06:41:20

Эх, придётся дожидаться bsl_zcs...
Одной строчкой кода...


Дата: Ноя 1, 2003 10:55:05

IceStudent, "одной строчкой кода" тут дело не решить. Осмелюсь предположить, что двумя, и даже тремя, это тоже не решается :-) Строчек будет много... ОЧЕНЬ МНОГО... Боюсь даже настолько много, что человек за это взявшийся может сильно пожалеть о "бесцельно прожитых годах" :-))) Хотя, могу и ошибиться.

Я предлагаю более реальный вариант. Практически все структуры (а может и перечисления тоже) можно вытянуть из PDB файлов. Для этого есть хорошо документированный интерфейс. В общем, сливай эту тулзень http://pdbdump.sourceforge.net/ - это типа образец. Бери DIA SDK (есть на сайте), открывай соответствующий раздел в MSDN и вперед. Если COM не знаешь, то придется перед этим его изучить.


Дата: Ноя 1, 2003 14:21:23

IceStudent: Такой большой, а в сказки веришь. :( Надо же соизмерять сложность проблем и предполагаемых решений.

Разумеется, одной строчкой могут делаться только самые простые вещи. Особенно, без использования сторонних продвинутых библиотек.

Прошу прощения у всех присутствующих, если я кого-то ввёл в заблуждение.

Конкретно та строка, что имел в виду я, дёргает из сишного хедера только константы, а всё остальное забивает в коментарии.

Если тебе ещё интересно, то вот она:
perl -n -e "chomp; print /^#define (\w+)(\s+)([\w\.]+)(.*)/ ? qq/$1 $2= $3 ;$4\n/ : qq/; $_\n/" GL.H >gl.inc
Пишется как есть в командной строке.

Это слегка упрощённая версия того, чем я когда-то OpenGL-овские хедеры в fasm-овский формат конвертил для своей 4k интрухи. Подчеркну: я не позиционирую это как правильный стиль перлового программирования, такая запись может испугать кого угодно. Это просто пример того, что примитивная обработка текста может быть довольно компактной.

Теперь касательно сторонних продвинутых библиотек: на cpan-е есть несколько модулей, которые обещают парсить сишные исходники. В частности, C::Scan. Сам я его не пробовал, поэтому гарантировать ничего не могу, но строк в нём действительно не две и не три. ;) Интерфейс довольно прозрачен, я думаю, попробовать можно. Во всяком случае, если мне вдруг перестанет хватать одних констант, я для начала поэкспериментирую именно с ним.
К тому же, этот модуль используется в родном перловом конверторе h2xs.

Если этот модуль не поможет, можно будет посмотреть в сторону каких-нибудь yacc-ов с lexx-ами, опять же, сам не пробовал, но полагаю, что из них можно смастерить весьма продвинутый конвертор. Было бы желание.

В общем, удачи тебе в этом нелёгком деле. ;)


Дата: Ноя 1, 2003 19:39:31

Совершенно верно. Лучше писать это на yacc/lex. Перл - это классно, но лучше использовать родные вещи, специально под это дело заточенные. Брать и конвертить. Во второй части пакеров давал линк. Сейчас не помню. Смотреть на codeproject.com

bsl_zcs - любитель пинаться, привет! Рад тебя видеть.


Дата: Ноя 2, 2003 17:37:35

volodya
Во второй части пакеров давал линк
А что, вторая часть уже вышла?
Где ее можно почитать?


Дата: Ноя 2, 2003 18:27:50

Max

На сайте через 2-3 дня.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.103