1

これは私に多くのトラブルを引き起こしている質問ですが、2 週間後に行われる最終試験のために理解する必要があります。言い回しのせいかどうかはわかりませんが、具体的な答えにたどり着く方法がわかりません。質問は次のとおりです。

「Bob は LC-3 TRAP 命令のメカニズムを変更する予定です。彼には 2 つのアイデアがあります。TRAP 命令のビット [8:11] を利用する。トラップ ルーチンの最初の命令は、トラップ ルーチンの開始アドレスではなく、TRAP 命令. 彼の新しい設計では、元の LC-3 TRAP と同じ数の TRAP ルーチンを実装したいと考えています. 各 TRAP ルーチンが彼の中に持つ命令の平均行数を計算します.新しいデザイン。」

TRAP には x20、x25、x23 の 3 つの基本的な TRAP ベクトルがあることを知っていますか? 「命令の行数」とはどういう意味ですか?

4

2 に答える 2

0

それはかなりあいまいです。Trap サブルーチンは、特定の機能を実行するのに必要な大きさです。しかし、サブルーチンで必要な行だけを数えている場合は、少なくとも 7 行必要です (または、ルーチンを呼び出したコマンドに戻すだけの場合は 1 行)。

TRAP x21 のルーチンを見ると、次のようになります。

.ORIG x0430 ; syscall address
    ST R7, SaveR7
    ST R1, SaveR1
TryWrite
    LDI R1, CRTSR
    BRzp TryWrite
WriteIt
    STI R0, CRTDR
Return
    LD R1, SaveR1
    LD R7, SaveR7
    RET
CRTSR   .FILL xFE04
CRTDR   .FILL xFE06
SaveR1  .FILL 0
SaveR7  .FILL 0
.END

使用する前にレジスタを保存し、ルーチンの実行後にレジスタをロードする必要があります。これらのレジスタを格納するための変数が必要です。最後に、ルーチンを呼び出したコマンドに戻るための RET コマンドが必要です。

于 2015-04-25T16:40:52.030 に答える
0

クラスで Mc Graw Hill LC-3 シミュレーターを使用していますか? TRAP コマンドでテキストを読み取るため、ビット [8:11] は MAR に送信されてメモリからロードされることさえなく、ドロップされるだけです。ビット [7:0] のみが使用されます。これは、トラップ ベクター テーブル内の位置を指すためです。


著作権 Mc Graw Hill

x0000 から x00FF までの合計 256 のメモリ位置が、対応するトラップ ベクターによって指定されたシステム コールの開始アドレスを格納するために使用できます。このメモリ領域は、トラップ ベクター テーブルと呼ばれます。

ベクター テーブルは、256 の使用可能なトラップ ベクターのうち 6 つしか使用していないため、250 の独自のトラップ呼び出しを行うことができます。


「ボブ」がしようとしていたことを試した後、「1024 は 8 ビット トラップ ベクトルとして表現できません」というエラーが表示され、自分のトラップ呼び出しを手動で入力しようとすると (例: TRAP400 .FILL xF400 ;これは1111 0100 0000 0000) サブルーチンを実行しません。


そうは言っても、あなたの質問は、Bob がLC-3の独自のバージョンを作成しており、使用できるトラップ ベクトルの量を増やしたいということを意味しているにすぎません。その場合、ビット [11:0] を使用すると、元の 6 を含めない場合、4,095 個のトラップ コマンドまたは 4,089 個のトラップ コマンドを持つことができます。

それが役立つことを願っています。

于 2015-04-25T08:19:56.293 に答える