Советую это сразу переделать, в новых OS-aх менеджеры памяти эмулируют виртуальную память таким интерфейсом:
REGION_HANDLE malloc(SIZE); // выделяет память и возвращает REGION_HANDLE - index или ID-шник на выделенный блок памяти.
ADDRESS lock_region(REGION_HANDLE); // отображает блок памяти в текущее адресное пространство для чтения\изменения.
void release_region(REGION_HANDLE); // убирает блок памяти из текущего адресного пространства.
void free(REGION_HANDLE); // освобождает выделенную память.
Ну и везде где ранее параметром передавался ADDRESS теперь надо передавать REGION_HANDLE.
REGION_HANDLE для БК-0010 может быть 8-bit так как 256 кусков памяти это уже довольно много а сами выделенные блоки можно держать на диске или в отключенных страницах (для этого надо вести статистику какие из них больше всего востребованны).
---------- Post added at 10:00 ---------- Previous post was at 09:47 ----------
Передавать через стек параметры нелепо, если они маленькие передавать через регистры а если большие то они и так уже в памяти и надо передавать указатель или handle на них. Ну естественно malloc работает медленее чем push и например для рекурсии это сулит большую потерю производительности НО! учитывая что в БК-0010 мало памяти это очень даже приемлемая потеря.





Ответить с цитированием