Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Разработка компиляторов. (http://forum.oszone.net/showthread.php?t=29397)

ivank 31-01-2002 09:10 203700

У меня чейчас в голове (и частично на диске) крутится идея сделать компилятор Visual Basic Script... В процессе написания сего компилера, у меня возникло всего три проблеммы:
  1. VBS язык безтиповый. Я это поборол просто -- ввёл новый оператор 'As тип. Пока помогает. Потом введу полноценную дедукцию типа, это не есть проблемма.
  2. А проблемма, в том что у меня, по причине малого опыта построения компиляторов, нет практичесски никакой документации... Т.е. все, даже базовые конструкции, я вывожу сам.
  3. Ну и наконец, кто-нибудь знает где можно найти набор комант защщённого режим в подобном виде:
    [pre]mov eax, ebx * *01 23 45 67
    mov ebx, eax * *FE DC BA 98
    итд[/pre]
    ? А то сейчас я это делаю через жо.... заднее место (reverse engineering) Т.е. я сначало пишу нужный код на асме, затем компилю насмом, и смотрю на результат в Отладчике / декомпилере / hex редакторе :(

vasketsov 31-01-2002 09:22 203701

ivank
У нас в МФТИ, помнится, были дисциплины по реализации языков программирования. Из всей литературы, что советовалась, навскидку помню только книгу авторов Ахо и Ульман (название забыл) + еще труды наших препов. Если тебя интересует что-то менее академическое, могу поискать, но я так понял, у тебя проблемы с описанием грамматики языка для компилятора?

По 3-му. Вообще-то серьезная книга по асму должна писать машинные коды для команд (они там даже ведь по длине внутри одной команды различаются). Вот у меня в Питере Абеле (в красном таком и в толстом) это все есть.

ivank 31-01-2002 10:41 203702

vasketsov
С грамматикой как раз проблем нет. Я свой клон Spirit написал, он не такой мощный, зато его MSVC компиляет.

Проблеммы как раз с тем что во что компиляется. Особенно со stack unwinding -- у меня есть собственная, но очень кривая реализация...

Цитата:

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

vasketsov 31-01-2002 11:13 203703

Для получения кодов по команде могу предложить такое действо. Компилишь бинарник, куда руками пишешь то, что надо. После этого открываешь его HEXEDIT'ом (если правильно помню), он там умеет команды и коды показывать.

ivank 31-01-2002 11:39 203704

vasketsov
да, я с помощью hiew смотрю пока... Но это жутко неудобно (много комманд нужно =)

ivank 01-02-2002 19:16 203705

Всем спасибо... Я нашёл решение проблеммы -- взял исходник другого (очень простого, и даже несоответствующего стандарту C) компилятора, и довольно таки немаленькую часть кодогенератора сейчас передираю к себе. Компилятор русский -- "Странник -- Модула-Си-Паскаль"... Сам компилятор ИМХО очень плох. Хотя он компактен и быстр. Но у него есть огромный недостаток -- стандарту C он не соответвует, а ни паскаля, ни Модулы я не знаю...

Добавлено:

Хотелось бы добавить -- нашёл хороший ресурс о построении трансляторов -- "Компиляторы: принципы, методы и средства разработки"

Guess Who 04-03-2002 01:30 203706

По поводу пункта 3.
А если сделать файл листинга программы? В TASM-е ключом /l делается и получается как раз в том виде как ты хочешь, правда я не уверен, что точно так-же делает NASM.

VuDZ 04-03-2002 14:43 203707

вот гемморой понапридумывали. в MSVC _asm command. потом в debug окне смотришь байтики (надо это в опция вклюцить - Sjow Code Bytes)
а построение комманд- далеко не линейное - зависит от того - используются регистры, память. какие операнды - скачай pdf с АМД на который я тебе давал ссылку - там все команды, в том числе и SSE расписаны - такты, последовательности байт, спариваемость и пр.

Guest 08-10-2003 06:07 203708

Подскажите пожалуста где можна скачать хорошый учебник по написанию транслятора?

MikHaker 30-01-2004 19:54 203709

Компилятор
 
Как можно сделать Компилятор

Добавлено:

Как можно сделать Компилятор на Visual Basic 6.0:(

Guest 09-10-2004 11:03 203710

Коды всех команд: http://www.intel.com, http://www.amd.com, скачиваете файлы pdf:
ftp://download.intel.com/design/Pent...s/25366515.pdf
ftp://download.intel.com/design/Pent...s/25366615.pdf
ftp://download.intel.com/design/Pent...s/25366715.pdf
и на AMD (там даже больше, включая 3DNow!, AMD64 и т.д.)
еще есть книга Зубкова Assembler для DOS,Windows и Unix, там тоже есть описание форматов команд.
Мне интересно, кто нибудь делал большие компиляторы, типа С++, как лучше организовывать структуры данных? Т.е. таблицы типов, функций, классов, наследования и т.д.

ivank 10-10-2004 02:02 203711

Лично по мне, http://sandpile.org/ - самый полный ресурс по x86 "вообще". Во-всяком случае для тех двух моих компайлеров, которые генерили напрямую машинный код, я брал инфу именно там.

Я делал, только компилятор чистого C (за исключением указателей на ф-ии, которые мне не были нужны, - почти стандартный ANSI89 [[или 92?, не помню]]), но он, в сущности, очень прост.

В принципе, компилятор C++ по большей части будет не сложнее Сишного, в плане хранения семантической информации. ИМХО Наибольший гемор - шаблоны. Эффективные алгоритмы инстанцирования оных отнюдь не просты, на сколько я знаю; а у простых алгоритмов требования к памяти растут чуть ли не по экспоненте.


Время: 06:25.

Время: 06:25.
© OSzone.net 2001-