Раздел «Язык Си».PDPPlan:
Неделя Что делаем
20 марта c: bit_0 .. bit_5, cpu
27 марта c: pdp_rw, pdp_load. Эмулятор: читать данные из файла (а не с клавиатуры). Положить код в репозиторий
3 апреля pdp11: установка программ. суммирование 2 чисел. Эмулятор: загрузить программу суммирования двух чисел, напечатать адреса, значения по ним и названия команд mov, add, halt (см. пример под таблицей)
10 апреля pdp11: Суммирование массива чисел (длиной в машинное слово) известной длины.
Эмулятор: сложение 2 чисел.
29 фев pdp: Условные операторы. Суммирование массива переменной длины, оканчивающегося нулем.
c: cpu
7 мар pdp: if (R0 < 0) R1 = 5; else R1 = 2; (без сложения/вычитания!!!).
c: pdp_rw
14 мар системы контроля версий, настройка среды разработки дома.
c: pdp_load
21 мар с: работа с файлами, аргументы командной строки, функции от переменного количества аргументов (читаем из файла, чье имя указано в командной строке, ключ вкл/выкл трассировки)
28 мар pdp: кодирование команд
c: Программа из нескольких файлов. Находим и печатаем имена команд (только для команд из теста суммирования двух чисел sum.pdp). При выполнении команды halt печатать содержимое всех регистров.
4 апр pdp: режимы адресации
c: разбор аргументов типа ss и dd, реализация 0-2 моды адресации. Работа теста sum.pdp
11 апр с: реализация условных операторов. Работа теста на суммирование массива, оканчивающегося 0.
18 апр pdp: ввод и вывод. Hello, world!
c: Реализация ввода и вывода. Дописываем моды адресации, которые встречаются в тесте.
25 апр pdp: подпрограммы, написание и использование подпрограмм putc, puts
c: реализация команд rts, jsr. Дописываем моды адресации, которые встречаются в тесте.
2 мая pdp: печать числа в бинарном виде.
c: Реализация недостающих функций (в форме зачета)
9 мая pdp: печать числа в восьмеричном или шестнадцатеричном виде виде.
c: Реализация недостающих функций (в форме зачета)
16 мая c: Реализация недостающих функций для произвольных тестов (в форме зачета)

Приложение 1.

Сложение 2 чисел. Этот код мы выполняем
0200 000c
c0
15
02
00
c1
15
03
00
01
60
00
00

Должны напечатать (1 приближение):

001000: 012700 MOV
001002: 000002 unknown 
001004: 012701 MOV 
001006: 000003 unknown 
001010: 060001 ADD 
001012: 000000 HALT

Должно в итоге печатать (когда умеем разбирать аргументы)

001000 : 012700 MOV #2 R0
001004 : 012701 MOV #3 R1
001010 : 060001 ADD R0 R1
001012 : 000000 HALT

-- TatyanaDerbysheva - 29 Feb 2016