Евгений написал(а):Появились ли мысли, какую машину будем разрабатывать? Регистровую, стековую, комбинированную... Сколькиадресную... Сколькибитную... Какой начальный набор команд?
Сначала пишем машину под компилятор.
С регистром адреса команд (т.е. не четырёх-адресную, а максимум трёх),
С регистрами общего назначения (штук 15 хватит, наверное по уши)
С регистром стека (чтобы было удобно делать рекурсивные функции),
С косвенной адресацией (чтобы можно было получать доступ к элементам массивов, хотя бы одномерных строк)
Расширяем её памятью.
Потом расширяем её вводом-выводом, для того, чтобы сделать web-сервер,
Затем таргетируем на неё компилятор ПОП,
либо пишем под неё по-аналогии с компилятором ПОП компилятор на русифицированном си
Затем пишем сайт/форум на российском языке (компилятора).
Арность элементов памяти = 2 (биты, а не триты, хотя было бы прикольно, но париться не хочется)
Разрядность памяти = 8 бит на байт
Длина регистров = 64 бит на регистр
не нужны команды для плавающей точки, наверное
нужен регистр флагов (арифметический перенос, флаг знака, флаг нулевого результата, + не помню что там ещё хранят)
нужна команда "выполнить аппаратную магию" (примерно как syscall), к ней пять расширений:
0) читать с потока ввода
1) писать в поток вывода
2) писать в поток ошибок
3) получить командную строку
4) получить переменные окружения
Таким образом всё нужное для компилятора и протокола CGI (common gateway interface) будет. Конечно, это не оптимально, зато быстро с точки зрения реализации.
На первом этапе многопоточность не делаем, потому что не умеем (и будем как авторы JavaScript).
Вообще говоря, на КуМире сайты делали, и CGI к нему прикручивали. Можно и этот подвиг повторить, но мне не нравится большое количество иностранных компонент в том решении.
Отредактировано Лис (2022-06-16 20:06:13)