@AHMED_RAPIRA

Как организовать массив состоящий из разных участков памяти?

У меня есть линейная память заполненная данными, но работать мне нужно только с определенными ее диапазонами. Представить эти диапазоны нужно в виде линейной памяти, то есть как будто это массив.

63c423db5428b088160499.png

Есть следующие варианты:
- сделать проход по всем диапазонам и скопировать все значения из них в новый блок линейной памяти по порядку
- сохранить диапазоны в виде пар индекс / длина в новом блоке памяти, а затем написать какой-то умный алгоритм для решения моей задачи
- ...

Какой из них будет правильный и дешевый по памяти / производительности?
  • Вопрос задан
  • 96 просмотров
Решения вопроса 2
@rPman
От задачи.
Если тебе нужна скорость, то придется пожертвовать памятью и создать массив указателей на элементы (т.е. в твоем примере это массив указателей на элементы с индексом 2,3,6,7,8,10).

Если память жалко, то заплати процессором и храни массив индекс+длина (код при этом будет неадекватно большим, если ты начнешь оптимизировать поиск попадания искомого номера элемента в соответствующий кусок)

Особенно грустно, если структура кусков и размер массива будет меняться. Первый подход сильно все упростит
Ответ написан
@VitalyChaikin
Во втором массиве хранить смещение элементов первого массива;
mov bx, Mass2[ i ] ; Получаем offset элемента 
mov ax, Mass1[bx] ; Получаем значение элемента в ax
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Напоминает попытку построить свой кеш. А зачем топик тегирован Ассемблером? Какая тут нерешаемая
для ассемблера задача?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы