2012-04-14 5 views
5

私はゲーム0x10cからan assemblinker for the 16-bit DCPUを実装しています。Turbo Pascalオーバーレイはどのように機能しましたか?

誰かが私に提案した1つのテクニックは、実行時にコードをスワップするために、「当日のTurbo Pascalのようなオーバーレイを使用していました。

私は基本的な考え方(同じメモリにオーバーレイされたシンボルをリンクして、refの前に入れ替える)を得ましたが、その実装は何ですか?

コンパイラが参照の前に挿入した関数ですか?それは罠ですか?オーバーレイのデータがオーバーレイの場所に保存されていたか、大きなテーブルのどこかに保存されていましたか?それはうまくいったのですか、それとも頻繁に壊れましたか?オーバーレイされたパスカル(とその逆)とのリンクのためのアセンブリのためのインターフェイスがあったか、それとも互換性がありませんでしたか?

Googleは基本的に私に情報を提供していません(現代のPascalコンパイラのノー・オン以外)。そして、私はちょうど、あまりにも若いので、彼らが今の時代に必要だったのはあまりにも若すぎます。

+0

リンク0x10c.comに到達できません(永久タイムアウト)。交換品はありますか? – ChristianWimmer

答えて

4

ロードされていないときに、要素がトラップ(int 3F)を指すジャンプ・テーブル。しかしそれは古いTurbo Pascal/Borland Pascalバージョン(5/6)用であり、新しいものも保護モードをサポートし(286)、さらに別の方式を採用する可能性があります。

このスキームは、オーバーレイがロードされたときに、トラップオーバーヘッドが発生しなくなることを意味します。

このリンクは私の参考文献に見つかりました:The Slithy Tove複数のオーバーレイにまたがるコールチェーンの処理方法など、そこには他にも素晴らしい情報があります。

+0

右*に*!それはまさに私が必要としていたものです!ありがとうございました。 –

関連する問題