コンピュータシステムの理論と実装を学習中です。
アセンブラの実装でL命令の扱いのイメージが持てないので質問させていただきます。
テキスト中で、ラベルシンボルの説明として
「(Xxx)という疑似コマンドはXxxというシンボルを定義する。これは疑似コマンドの次のコマンドの次のコマンドの位置を参照する。」とあります。
以下サンプルコードです。
asm
1// Computes R2 = max(R0, R1) (R0,R1,R2 refer to RAM[0],RAM[1],RAM[2]) 2 300 @R0 401 D=M // D = first number 502 @R1 603 D=D-M // D = first number - second number 704 @OUTPUT_FIRST 805 D;JGT // if D>0 (first is greater) goto output_first 906 @R1 1007 D=M // D = second number 1108 @OUTPUT_D 1209 0;JMP // goto output_d 1310 (OUTPUT_FIRST) 1411 @R0 1512 D=M // D = first number 1613 (OUTPUT_D) 1714 @R2 1815 M=D // M[2] = D (greatest number) 1916 (INFINITE_LOOP) 2017 @INFINITE_LOOP 2118 0;JMP // infinite loop 22
例えば、@R0のR0のようなシンボルは物理アドレスを表していますが(間違っていたらごめんなさい)、これに対して(OUTPUT_FIRST)のような疑似コマンドは一体何を表していいるのでしょうか?
テキスト中の説明に従うと、OUTPUT_FIRSTというシンボルが参照しているものは、そのコマンドである@R0の位置ということになります。
この位置という言葉の曖昧さが理解の障壁となっています。質問内容をうまく言語化することができませんが、くっきりとしたイメージのつく説明があれば是非ご教授ください。宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/11 10:10 編集
2020/04/11 09:19
2020/04/11 09:20
退会済みユーザー
2020/04/11 10:09
2020/04/11 10:19
退会済みユーザー
2020/04/11 10:24 編集