バージョン6 UnixでこのTMGのアセンブリコードを理解する方法は?

バージョン6 UnixでこのTMGのアセンブリコードを理解する方法は?

Unixの初期バージョンには、tmg初期コンパイラコンパイラであるDoug McIlroyのツール(「コンバータ」)が含まれていました。 TMGは、Dennis Ritchieのアセンブリ言語とTMGL自体(TMGがアセンブリ言語に翻訳されている)として実装されています。これはTMGマニュアル(1972).ここUnix バージョン 6 の完全なソースコードです。

tmgl.s私はMcIlroyのTMG実装がどのように機能するかを理解しようとしているので、TMGから翻訳されたこのファイルを読んでいます。tmgl.t私は次の抜粋に混乱しています。

.1=.
1
.2=.
2
.3=.

そして:

goto;..2
..3:null
..2:

私は読んだPAL-11RそしてUnixアセンブリ手動ですが、説明は覚えていません。

特別:

  • .「場所カウンター」という意味なのですが、それは何ですか.3=.
  • ..「前カウンター」という意味なのに、それはなんですか..3

(さらに悪いことに、この構文はTMG実装でのみ検出され、Unix V6の他のソースファイルでは見つかりません。また、破損したコードや段階的に廃止された構文の可能性を排除するために、TMGソースは実際には次のようにコンパイルされます。Python PDP-11エミュレータUnix V6を実行しています。 )

ベストアンサー1

.1..1特別な意味はありません。これは単純な識別子(ラベル、変数など)です。宣言しない限り、デフォルトでは.globlローカルになります。

その時もそうだったし、今も同じだ。たとえば、予防gccするには.静的変数カスタムシンボルとの競合を避けてください。

何ですか.3=.

.3これは、位置カウンタ値(現在のセグメント内オフセット)と呼ばれるローカルシンボルに割り当てられます。

おすすめ記事