2012-04-14 4 views
5

Я реализую an assemblinker for the 16-bit DCPU из игры 0x10c.Как работали наложения Turbo Pascal?

Один метод, который кто-то предложил мне, использовал «накладки, как в Turbo Pascal в тот же день», чтобы поменять код во время выполнения.

Я получаю основную идею (ссылки наложенные символы в ту же память, своп перед ref), но какова была их реализация?

Была ли это функция, которую компилятор вставил перед ссылками? Это была ловушка? Были ли данные для наложения сохранены в месте наложения или в большой таблице где-нибудь? Это хорошо работает или часто ломается? Был ли интерфейс для сборки связан с наложенным Pascal (и наоборот), или это было несовместимо?

Google не предоставляет мне в основном никакой информации (кроме того, что она не была включена в современные компиляторы Pascal). И я просто, как, пять лет, слишком молод, чтобы когда-либо нуждаться в них, когда они были текущими.

+0

Ссылка 0x10c.com недоступна (постоянный тайм-аут). Есть ли замена? – ChristianWimmer

ответ

4

Таблица перехода на единицу, элементы которой указывают на ловушку (int 3F), когда она не загружена. Но это относится к более старым версиям Turbo Pascal/Borland Pascal (5/6), более новые также поддерживают (286) защищенный режим, и они могут использовать еще одну схему.

Эта схема означает, что при загрузке наложения больше не происходит накладных расходов на ловушку.

Я нашел эту ссылку в своих ссылках: The Slithy Tove. Есть и другие интересные детали, например, как обрабатываются цепочки вызовов, которые охватывают несколько наложений.

+0

правый * сверху *! Это именно то, что мне нужно! Спасибо. –

Смежные вопросы