Интересно выходит,
1) "плоский" режим не что иное как упрощение реальной жизни, т.е. в каждом CPU адресное пространство ограниченно, а значит можно себе представить что потребуются overlays (а иначе можно было бы загрузить все проги вселенной в "резиновую" память);
2) для поддержки overlays компилятору и компоновщику нужно различать как минимум 2 типа памяти (общая и подменяемая), а так же знать максимальный размер и количество кусков таких типов (это чтоб контроллировать выход за рамки возможного);
3) у компилятора с поддержкой overlays кроме обычных операций jmp() call() есть так же jmp_far() и call_far() которые перед самой передачей управления изменят конфигурацию памяти на нужную (рассчитанную компоновщиком, который тоже должен знать про overlays);
4) сами программы должны быть написанны с учетом overlays (и возможно иметь настройки сколько страниц использовать и какого размера общая страница, стек и подгружаемые страницы), а такие алгоритмы типа "рекурсионные" вообще никуда не годятся так как рассчитанны на "резиновую" память.

