МАРСианская впадина
Dec. 3rd, 2024 06:14 pmПусть и здесь будет: проект по пониманию архивной системы МАРС-6.
Дело там в следующем. Стандартный интерфейс DBM позволяет оперировать с ассоциативным массивом пар (ключ; данные), где размеры и ключа, и данных произвольны, до известного предела. Это обычно реализуется путем хеширования ключа, поиска по хешу в структуре данных с более или менее эффективным поиском, и разрешением возникающих коллизий явным сравнением хранящихся ключей с искомым.
НО: реализованный интерфейс предоставляет лишь сервис работы с парами (однословный ключ-хеш; данные) с помощью микропрограммной реализации, например, вставка записи в базу или замена старых данных на новые, если запись с данным ключом уже есть, выглядит примерно как "FIND NOMATCH (IFTRUE INSERT ADDKEY DONE) UPDATE".
Интересно, что собственно вычисления хеш-функции среди микрокоманд нет.
(Обновлено 22 января 2025) Переписанная на С++ реализация позволила понять смысл и назначение всех микрокоманд. С помощью помеси байт-кода и шитого кода, который реализует виртуальная машина, можно писать условные операторы, циклы и пр. Осталось лишь написать код для желаемых операций с базой.
Интересующиеся приглашаются поучаствовать или поискать других потенциальных интересующихся реверс-инжинирингом или базами данных.
Дело там в следующем. Стандартный интерфейс DBM позволяет оперировать с ассоциативным массивом пар (ключ; данные), где размеры и ключа, и данных произвольны, до известного предела. Это обычно реализуется путем хеширования ключа, поиска по хешу в структуре данных с более или менее эффективным поиском, и разрешением возникающих коллизий явным сравнением хранящихся ключей с искомым.
НО: реализованный интерфейс предоставляет лишь сервис работы с парами (однословный ключ-хеш; данные) с помощью микропрограммной реализации, например, вставка записи в базу или замена старых данных на новые, если запись с данным ключом уже есть, выглядит примерно как "FIND NOMATCH (IFTRUE INSERT ADDKEY DONE) UPDATE".
Интересно, что собственно вычисления хеш-функции среди микрокоманд нет.
(Обновлено 22 января 2025) Переписанная на С++ реализация позволила понять смысл и назначение всех микрокоманд. С помощью помеси байт-кода и шитого кода, который реализует виртуальная машина, можно писать условные операторы, циклы и пр. Осталось лишь написать код для желаемых операций с базой.
Интересующиеся приглашаются поучаствовать или поискать других потенциальных интересующихся реверс-инжинирингом или базами данных.