Category: компьютеры

Category was added automatically. Read all entries about "компьютеры".

Технотрек: Занятия 09, 10: Рекурсивный спуск


(Копия блога на Технотреке)

Summary

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



Следуя нашему методу рассмотрения рекурсивного спуска, нетрудно добавить в грамматику не только арифметические действия, но и операторы присваивания, условия, цикла, вызова функции и другие.

Домашнее задание
Collapse )

Технотрек: Промышленное программирование. Занятие 06: The Процессор, continued


(Копия блога на Технотреке)

Summary

В этот раз мы разобрали работу с адресами с помощью меток. Они используются в качестве синонимов адресов кода или данных (переменных). Важно понимать, что процессор с метками дело не имеет, он работает только с адресами. С метками работает только ассемблер, он переводит их а адреса. Это часто путают.

При ассемблировании возникает проблема трансляции имени метки с адресом, который еще не обрабатывался. Такой метки ассемблер еще пока "не знает". Это решается по-разному, самый простой путь - двухпроходная (многопроходная) схема компиляции.

Домашнее задание

Collapse )

Технотрек: Промышленное программирование. Занятие 05: The Процессор


(Копия блога на Технотреке)

Summary

На этом занятии мы применяли стек для вычислений, записанных в обратной польской записи. Это простая вещь, но мы на этом не остановились, и, пройдя несколько итераций разработки, сконструировали процессор, работающий по загружаемым в него программам. Наш процессор реализован в виде структуры и состоит из стека для временных данных для вычислений, нескольких регистров и оперативной памяти, в которой размещается программа. По ходу дела мы разобрали несколько простых, но важных моментов:

  1. В любой непонятной ситуации делай новую структуру :)

  2. Для процессора коды команд лучше, чем их названия;

  3. Для человека названия команд лучше, чем их коды;

  4. Противоречие п.2 - п.3 решается введением понятия компиляции. Радостные, пишем ассемблер и дизассемблер;

  5. Один только стек для хранения данных неудобен, вводим регистры. Чтобы доступ был легок и быстр, переменную клади в регистр;

  6. Операции с регистрами изменили работу команд, вводим заголовок исполняемого байт-кода, содержащий версию системы команд.

  7. Задумались о сравнении величин, условных операторах (переходах) и о том, как указывать место назначения перехода. Пока остановились на том, что просто будем писать адрес перехода, что, конечно, неудобно.

Домашнее задание

Collapse )