перевод модуля Machine - как его оживить

Только технические вопросы по ЯОС и MINOS. Терминология и прочее - в других форумах.
Ответить
БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

перевод модуля Machine - как его оживить

Сообщение БудДен » 04.02.22 19:16

Поезд где-то сходит с рельсов. Здесь будет журнал мучений.

1. В команде линковки заменил Builtins на ПримитивыСредыВыполнения (но изменение пропало вместе с временным файлом) - повторить. Вряд ли поможет, но посмотрим.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: перевод модуля Machine - как его оживить

Сообщение БудДен » 04.02.22 19:36

Пересобранная англоязычная версия. В неё копируем все source, создаём директорию ЯОС:NewWin32b

и

Код: Выделить всё

СборщикВыпускаЯОС.Скомпилируй --лис -o='-p=Win32 ' --скомпилируй --путьКОбъектнымФайлам='C:/ob/jaos/NewWin32b/' Win32
Что наблюдаем?

Код: Выделить всё

	Windows.Machine.Mod@8558 : ошибка: constant expected. �шКод in line 271, col 23, pos 8558
	Windows.Machine.Mod@8580 : ошибка: constant expected. RDI, [RBP + destAdr(*!*)] in line 272, col 20, pos 8580
Это значит, что внутри ассемблерных вставок переводчик не переводит, мы перевели параметры и код протух. В прошлый раз было то же самое, но я, видимо, один раз скомпилировал неаккуратно, испортил директорию bin и после этого всё развалилось (компилятор перестал запускаться).

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: перевод модуля Machine - как его оживить

Сообщение БудДен » 04.02.22 19:37

Пострадавшие процедуры:

ЗаполниДиапазонБайтовПредставлениемЦел32
атомарноИсключиИзМнваНаБитах
ДайИдентификаторПроцессора
ПоменяйПорядокБайтЦел32

Для них надо отменить перевод параметров.

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: перевод модуля Machine - как его оживить

Сообщение БудДен » 04.02.22 21:34

Переделал словарь и заново запустил перевод на русский. Следующие действия:

- когда переведётся, создать в гите новую локальную ветку, не подлежащую отправке
- зафиксировать в ней переведённые исходники
- пересобрать обычным скриптом пересборки, убрав опцию "английские имена". Появится русскоязычная ЯОС с новым модулем
- пересобрать все конфигурации и убедиться, что больше нет падений
- в случае успеха, сделать новую копию ЯОС - jaos-ru, переключиться там на русскую ветку и скопировать из английской
директорию source, win32/bin, win32/oberon.exe.
- убедиться в работоспособности и пересобрать саму себя
- зафиксировать в jaos-ru русскую ветку и отправить.
- удалить jaos
- переименовать jaos-ru в jaos
- стереть временную ветку

БудДен
Сообщения: 2839
Зарегистрирован: 07.10.18 14:01

Re: перевод модуля Machine - как его оживить

Сообщение БудДен » 05.02.22 00:50

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

Ответить