Итак, можно, конечно писать машкод. Но если подумать, то с исчезнованием инструкций (всех, кроме Б), исчезают так же инструкции перехода. Это значит, что метки и алгоритм расчёта длин переходов становятся ненужными. А раз нет меток, то можно упростить и синтаксис. Оставить только сами значения байтов в шестнадцатиричной записи. Машкод не нужен.
Т.е. программа должна считывать входной поток в фиксированном формате, примерно таком:
0А БВ 23 42 0Д БА 43 41 01 1В 23 45 5А 00 32 99 1111
17 В0 55 2С 00 00 00 00 00 00 00 00 00 00 00 00 2222
Чтобы исключить ошибки при вводе, в конец каждой строки можно добавить CRC-16, считаемую от байтов строки (чтобы не напутать в этих байтах), и от предыдущей CRC-16 (чтобы не пропустить строки, как в блокчейне).
Это остаётся русскоязычным программированием, так как для цифр больше 10 используются русские буквы.
(может, как в старину, заменить все цифры на первые 16 букв алфавита? Так же будет исконнее и самобытнее (без опоры на арабов))
А Б В Г Д Е Ё Ж З И Й К Л М Н О
Если надо такие числа в тексте выделять, то использовать букву П (префикс) в начале и пробел конце. Учитывая, что в русском наиболее часто встречающаяся согласная в начале слова и есть П - то может быть так оно и было с самого начала.
Ну вот. При помощи программы-ассемблера (сначала импортноязычной), написать код, который будет считывать файл-дамп и выдавать на выход двоичный код, соответствующий этому дампу.
Затем этот написанный код распечатать в виде дампа (чтобы подавать его на вход самому себе).
Получится утилита с исходником, который можно вбить аппаратно (переключателями).
Дальше, используя эту утилиту, можно сделать исходник утилиты/программы, парсящей машкод (на том - ассемблер, на ассемблере С и т.д.)
Зачем вообще нужен исходник в символах? Потому что биты надо как-то записывать. А буквами на бумаге - компактнее, чем узелками на нитках (как у кипукамайоков).
Написать такую утилиту для ввода дампа - это практически уровень задачи на собеседовании. (Собственно MihalNik так и предлагал). Сложно придумать, куда упрощать написание компилятора дальше
(или всё-таки попробовать узелки?
"узелки на память", говорим: "связать мысль", "связывать слово со словом", "говорить путанно", "спутать смысл", "клубок песен", "нить повествования", "узел проблем", "хитросплетение сюжета", "завязка" и "развязка" о начале и конце художественного произведения, "неувязка" – о бессмыслице в тексте. Сохранилась пословица: "Что знала, то сказала, на нитку нанизала". Клубок в сказке об Иване-царевиче и бабе Яге как аналог клубка Ариадны
Пишут же пособия по действиям на случай Рагнарека/Армагеддона и тому подобных битв бобра с ослом). Узелки не будут русскоязычными, только это и останавливает.
Учитывая, что все узлы имеют одну природу, продолжим внимательно следить за прогрессом Уткина.
Отредактировано Лис (2018-11-05 05:10:44)