1

現在、私は本を読んでいます:Lions_Commentary_on_UNIX_6th_Edition、一緒に私はunix v6のソースコードを理解しようとしています、そして私はいくつかのコードが興味をそそられるのを見つけました:例えば

. = 40^.
...
. = 60^.

これは私があまり得意ではないPDP-11アセンブリですが、これらのコードがここで何をしようとしたのか誰かに説明してもらえますか?また、PDP-11には、別の記号「..」があります。この記号が何をするのか、誰か説明できますか?

4

2 に答える 2

1

^演算子は、最初のオペランドの値と2番目のオペランドのタイプを返します。

したがって.=40^.、ロケーションカウンターを現在のセグメントのロケーション40に設定します。これは、データまたはbssであると予想されます。プレーンは、絶対コードを発行しなかった.=40ため、ロケーションカウンターを絶対ロケーション40に設定しようとしましたが、これはエラーでした。as

..シンボルは、プログラムがロードされるメモリ内の場所である再配置カウンターでした。これは、ハードウェアを再配置しない初期のPDP-11のプログラムにとっては手ごわいものでした。私が覚えているように、これまで誰もがそれを使って行った唯一のことは..=something、コアの特定の場所にロードされることを意図したプログラムの最初に設定することでした。

DennisRitchieによるUNIXアセンブラリファレンスマニュアルはこちらのPDFで読むことができます。

于 2016-06-02T02:38:37.677 に答える
0

.はロケーションカウンターであるため、アセンブリ言語ステートメントは式によってロケーションカウンターの位置を調整している40^.ため60^.、アセンブラーのロケーションカウンターを移動することを目的としています。

ステートメントが読んだ場合

. = 40 + .

これは、ロケーションカウンターを40(8進数)+ロケーションカウンターの現在の値に変更することを意味します。私を混乱させるのは、^私が持っているMACRO11マニュアルによれば、この使用法では意味をなさない単項演算子であるということです。

于 2012-05-09T17:55:50.910 に答える