私はこの指示を持っています:
Move @-4(pc), 766(r5)
pc : 1000 (start point)
この命令がどのように実行されるべきか説明できますか?
私はこの指示を持っています:
Move @-4(pc), 766(r5)
pc : 1000 (start point)
この命令がどのように実行されるべきか説明できますか?
pdp については覚えていませんが、拡張である VAX 構文は次のことを意味します。 766(r5) は、2 番目のオペランドのアドレスが R5 + 766 (PDP の場合は 8 進数) であることを意味します。@-4(RC) 自動デクリメントを意味すると思うので、RC、subs 4、変数のアドレスである値を読み取ります。したがって、エントリ ポイントの 4 バイト前に var1 へのポインタがあり、var2 は R5 + 766(oct) にあります。ムーブは言うまでもなく、ムービング・インストラクションです。そして、OP1 から OP2 に移動したと思います。
私には PDP-11 コードのように見えます... @-4(PC) は「プログラム カウンターの内容を 4 減らしてアドレスを与えることを意味します...そして「@」はそのアドレスの内容を取得することを意味します。したがって、PC が 1000 の場合、(8 進数で) 4 を引いて 774 を取得し、アドレス 774 の内容 ('@' の意味) を調べます。この値 (SOURCE オペランド) を取得したら、それをどこかに置く必要があります。つまり、DESTINATION アドレスです。R5 (汎用レジスタ 5) に移動し、そこでアドレスを探します。そのアドレスに 8 進数の 766 を追加すると、DESTINATION アドレスが得られます (それが何であれ)。
PDP-11 の CPU は、SOURCE を DESTINATIOn に移動できるようになりました。(そして、MOVeではなくMOV命令です-私の記憶が正しく機能する場合、すべてのPDP命令は3文字のニーモニックでした-または少なくともそれらのほとんどはそうでした)
そうは言っても(!!)、SOURCEオペランドは1000マークを下回っています。つまり、予約領域(PDP-11のアドレス0から1000は「予約」されていました)にあります。これは、実際の PDP で動作する実際の命令でした ... !!! システムトラップ?
気をつけて
R