2012-04-14 17 views
5

Wdrażam an assemblinker for the 16-bit DCPU z gry 0x10c.Jak działają nakładki Turbo Pascal?

Jedna z technik, które ktoś mi zasugerował, używała "nakładek, jak w Turbo Pascal z powrotem w ciągu dnia" w celu zamiany kodu w czasie wykonywania.

Mam podstawową ideę (link nakładał symbole na tę samą pamięć, zamień przed ref), ale jaka była ich implementacja?

Czy to funkcja, którą kompilator wstawił przed odniesieniami? Czy to była pułapka? Czy dane dotyczące nakładki były przechowywane w lokalizacji nakładki lub w dużym stole? Czy to działało dobrze, czy też często się łamało? Czy był interfejs do połączenia z nakładanym Pascalem (i na odwrót), czy też był niezgodny?

Google nie daje mi praktycznie żadnych informacji (poza tym, że jest nowoczesnym oprogramowaniem dla współczesnych kompilatorów Pascal). I jestem po prostu, jak, pięć lat za młody, aby kiedykolwiek potrzebowali ich, kiedy byli obecni.

+0

Link 0x10c.com jest niedostępny (stały limit czasu). Czy jest wymiana? – ChristianWimmer

Odpowiedz

4

Tabela skoków na jednostkę, której elementy wskazują na pułapkę (int 3F), gdy nie są załadowane. Ale to jest dla starszych wersji Turbo Pascal/Borland Pascal (5/6), nowsze również wspierają (286) tryb chroniony i mogą one stosować inny schemat.

Ten schemat oznacza, że ​​po załadowaniu nakładki nie ma już miejsca na pułapkę.

Znalazłem ten link w moich referencjach: The Slithy Tove. Są tam inne miłe szczegóły, takie jak sposób obsługi wywołań obejmujący wiele nakładek.

+0

Right * on *! Właśnie tego potrzebowałem! Dziękuję Ci. –