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