LINUX.ORG.RU

Интерпретатор языка высокого уровня в машинный код


0

2

Дали тему курсовой работы «Интерпретатор языка высокого уровня в машинный код», которую нужно написать на С++. Насколько я понял машинный код это двоичная система счисления. Посоветуйте с чего начать, может план работы или литературой (желательно русскую) .

Зарание спасибо!

как-то слишком уж толсто

nokachi
()
Ответ на: комментарий от archimag

Незачёт за одно только название.

Да ладно, интерпретатор ЯВУ может быть не только в машинный же код, но и в код виртуальной машины. Хотя обычно этим уже компиляторы занимаются, но всякое бывает :)

KRoN73 ★★★★★
()

Интерпретатор языка высокого уровня в машинный код

А холодильников со встроенным гриллем в вашем ВУЗе случайно не производят?

geekless ★★
()

Не беспокойся, добрый дядя сержант в сказочной стране Армия все подскажет, со всем поможет.

buddhist ★★★★★
()

Насколько я понял машинный код это двоичная система счисления

Машинный код это такие числа, что их выполняет машина.
http://ru.wikipedia.org/wiki/Машинный_код
И да, тебе теперь читать «Компиляторы: принципы, технологии и инструментарий».

quantum-troll ★★★★★
()

Гуглить по
«красная книга дракона skyrim», только там на яве.
Сам писал на Qt, готовый лексический и синтаксический анализатор, скоро (на этой неделе) буду делать генератор кода. (код представляет собой ПОЛИЗ, который не сложно в ассемблер преобразовать)

ymuv ★★★★
()
Ответ на: комментарий от nokachi

Русский перевод идет к логопеду.

Я много плохого слышал про переведённый вариант. Но живьём не видел. Там что именно плохо - собственно перевод, или принципиальные/концептуальные ошибки, или с терминологией беда? Или все три «плохо» сразу?

PS: Сам для себя добыл английский оригинал. Перевод в любом случае добывать не планирую.

DeVliegendeHollander ★★
()
Ответ на: комментарий от ymuv

ПОЛИЗ

Ох, первый раз слышу такое название для rpn. Символичненько :)

buddhist ★★★★★
()
Ответ на: комментарий от quantum-troll

Тут можно неосилить английский, это жестоко.

Если есть время, то почему бы не начать осиливать? :)

Но в данном случае ТСу, похоже, не до «осиливания инглиша».

DeVliegendeHollander ★★
()
Ответ на: комментарий от ymuv

Забыл, язык на паскаль похожий, переменные с плавающей запятой.
Если нужен, могу скинуть, но код местами очень плохой, так как писался в основном в последнюю ночь перед здачей.)

ymuv ★★★★
()

Насколько я понял машинный код это двоичная система счисления.

Ты уже близко.

anonymous
()
Ответ на: комментарий от buddhist

Что значит фраза «интерпретация в код»? :)

Ну, например, оттранслировал токен в машинный код или код ВМ и исполнил, перешёл к следующему токену :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Most_Guard

Вообщем:
makePOLIS - недописана
Закладка L1 - лексический анализатор
Закладка L3- синтаксический, lab3_tablica - таблица переходов.
Закладка L6- должен быть генератор ПОЛИЗ, но еще только начат делать.

Перед тем как пройтись лексическим анализатором, нужно сохранить файл (сначала делал без гуя, потом намертво прибыл его туда).
Порядок запуска: открыть файл, лексический, синтаксический, кодогенератор (допишу на этой неделе).
На всякий случай 1-ая часть курсовой записки (на Укр.языке).
За код сильно не ругать)
http://www.fayloobmennik.net/1683247

ymuv ★★★★
()
Ответ на: комментарий от nokachi

токен в машинный код-это прекрасно

Что не нравится?

«Токен (лексический анализ) — последовательности символов в лексическом анализе в информатике, соответствующий лексеме»

Никогда не видел переводы лексем в машинный код? :)

KRoN73 ★★★★★
()
Ответ на: комментарий от nokachi

Пожалейте студента - не думаю, что он оригинал осилит (если так темы дипломов обзывает)... Пусть перевод читает, не так уж он плох, как вы его ругаете.

BattleCoder ★★★★★
()

К слову - избегайте привычки «умных профессоров» делать темы курсовых «подлиннее, поумнее и позвучнее», а то так очень часто получается какая-нибудь бессмыслица.

То, что вы хотели описать - можно назвать одним словом «компилятор». И «интерпретатор тут ни к месту». И про то, что в машинный код - писать необязательно... слово «компилятор» это подразумевает.

Правильнее всего будет тогда уж «Трансляция программного текста на языке высокого уровня в машинный код». Длинно, по-умному, и вроде без ошибок :-P

Но лучше не выпендриваться, IMHO.

BattleCoder ★★★★★
()
Ответ на: комментарий от BattleCoder

И про то, что в машинный код - писать необязательно... слово «компилятор» это подразумевает.

Не подразумевает.

geekless ★★
()
Ответ на: комментарий от geekless

Ладно, может, что и путаю =) в демагогию вступать не буду...

Для топикстартера есть куча книжек и википедия - уж там точно правдивее написано, чем научник скажет ;)

BattleCoder ★★★★★
()

ААА! МЫ ВСЕ УМРЕМ

Интерпретатор языка высокого уровня в машинный код

Ты делишь на ноль уже в заголовке. В машинный код делает только компилятор. А компилятор можно быстро накатать, связав ANTlr (для синтаксического анализа) и LLVM (для кодогенерации с человеческим лицом).

Насколько я понял машинный код это двоичная система счисления.

Машинный код - это, бл#$%, машинный код. Не смешивай сущности. Последовательность команд CPU. Каждая команда состоит из префиксов, опкода и операндов (ЕМНИП). За подробностями - к мануалам от интела или амда.

Deleted
()
Ответ на: комментарий от geekless

препод не тему дал, а бессмыслицу

Просто препод молодой, меня на 3 года старше, только после универа + толком объяснить ничего не может, а требует много!

Most_Guard
() автор топика
Ответ на: комментарий от nokachi

А чем плох русский перевод? Читал дракона именно в русском.

Deleted
()
Ответ на: комментарий от nokachi

ну это ж что считать машиной, да. Теоретически есть машина которая какой-нибудь трехадресный IR ест.

Ну откуда вас таких берут? :-(

Компилятор — это программа, строящая по входной программе на языке A эквивалентную программу на языке B. ВСЁ. Никаких машкодов определение компилятора не подразумевает.

geekless ★★
()
Ответ на: комментарий от ymuv

ПОЛИЗ

Куды полиз? Изврат это, а не язык :) Лучше сделай нормальный, компилятор которого будет его конвертить в ПОЛИЗ стэковое представление.

Deleted
()
Ответ на: комментарий от KRoN73

Без нормального анализа, генерации AST-а и прочего это невозможно (hint: какой код ты будешь генерить на токены class, struct, pulblic, private?)

Deleted
()
Ответ на: facepalm.asm от geekless

Чтобы он был компилятором, тебе необязательно его получать: достаточно того, что он этот код создает.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.