問題タブ [sic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1567 参照

c++ - SIC Assembler ソースのトークン化

システム プログラミング クラス用の SIC アセンブラーのコーディングはほぼ完了しましたが、トークン化の部分で困惑しています。

たとえば、次のソース コード行を見てください。

形式 (自由形式) は次のとおりです。 {LABEL} OPCODE {OPERAND{,X}} {COMMENT}

カールは、フィールドがオプションであることを示します。

また、各フィールドは少なくとも 1 つのスペースまたはタブで区切る必要があります。

上記のコードは整理するのが少し簡単ですが、次のスニペットが問題を引き起こしています。

私のコードは、コメントの最初の単語を OPERAND であるかのように読み取ります。

これが私のコードです:

私の教授は、アセンブラを 2 つのバージョンのソース コード (エラーのあるバージョンとないバージョン) でテストするように要求しています。

RSUB OPCODE は OPERAND に依存していないため、RSUB OPCODE の後のすべてがコメントと見なされることは理解していますが、誤ったソース コードの OPERAND フィールドに値が含まれている場合、または OPERAND に依存する OPCODE が欠落している場合OPERAND 値、どうすればこれを補正できますか? これらにエラーとしてフラグを立て、誤った OPERAND 値 (またはその欠如) を出力する必要があります。

私の質問は、コードのコメント部分がオペランドと見なされないようにするにはどうすればよいですか?

0 投票する
1 に答える
3190 参照

assembly - n、i、x、および e ビット設定 (SIC/XE) を識別する方法は?

System Software クラスのプロジェクトがあり、ソース行をラベル、オペコード、オペランド 1、オペランド 2 の 4 つのコンポーネントに分解し、n、i、x、および e ビット設定を識別するサブルーチンを作成する必要があります。nixbpe ビットを見つけようとして問題が発生しています。よろしくお願いします。

以下にいくつかの例を示します。 ソース行の次の 4 つの例のコンポーネントとビットは次のとおりです。

  1. 例 +LDA STUFF,X .MAIN

    ラベル: "EXAMPLE" オペコード: "LDA" オペランド 1: "STUFF" オペランド 2: "X"

    nixbpe: 111??1

  2. RSUB NO OP

    ラベル: "" オペコード: "RSUB" オペランド 1: "NO" オペランド 2: "OP"

    nixbpe: 110??0

  3. CMT BYTE @C'RESERVED BLOCK',XYZ SET Aside

    ラベル: "CMT" op コード: "BYTE" オペランド 1: "C'RESERVED BLOCK'" オペランド 2: "XYZ"第2オペランド>

    nixbpe: 101??0

  4. RMO A,X

    ラベル: "" オペコード: "RMO" オペランド 1: "A" オペランド 2: "X"

    nixbpe: 11l??0

「?」とマークされた nixbpe ビット 呼び出しプログラムから受け取ったままになります。op コードの接頭辞によって e-bit が決まります。operand1 の接頭辞によって n ビットと i ビットが決まります。operand2 の最初の文字が x ビットを決定します。b ビットと p ビットは別の場所に設定されます。このルーチンではセマンティック チェックは想定されていません (したがって、特に、上記の RSUB ステートメントの解釈はどちらも OK です)。コンポーネントのデフォルト値は空の文字列です。「ni??pe」ビットのデフォルトは「00??00」です。

0 投票する
2 に答える
1446 参照

assembly - イミディエイトおよびプログラム カウンターの相対アドレッシング

sic/xe マシンのコードに出くわしました....以下は、私にとって問題の原因となった行です...

ここで、'a' には pc 相対および即時モードが使用されるオブジェクト コードが含まれることが与えられました....しかし、b には即時モードのみが含まれます....長さが 0033 であるため、なぜ pc 相対を使用するのですか?モード....そして、PC 相対モードをあまりにも使用することが慣例により不可欠である場合、'b' で PC 相対モードと即時モードの両方を使用しないのはなぜですか?

0 投票する
1 に答える
1184 参照

assembly - sicxe アセンブリ言語プログラミング

以下は、sic/xe マシンのアセンブリ言語コードです。

これはブートストラップ ローダーです...このプログラムの目的は、デバイス F1 から読み取り、入力を 80 から始まるアドレスに格納することです...私の質問は、なぜシフト s,4.. .入力を一度取得すると、その ascii 値から元の値を見つけ、それを「ループ」に送信して保存します...プログラムからは、最初の半バイトの文字のみがループに送信され、次にその他...これが事実である場合、最初にcharcterの最初の半分のバイトがあるため、最初の半分のASCII操作は入力の実際の値を提供しません...また、プログラムが「getc」に戻ったとき' 残りの半バイトを取得するために、代わりにリスト内の他の文字が読み取られることはありません...以下は同じ本からのヘルプの行です...

0 投票する
1 に答える
4874 参照

assembly - オブジェクトコードの計算 - SIC/XE

のオブジェクトコードを計算するにはどうすればよいですか

010064(オブジェクトコード)の結果を取得するにはどうすればよいですか? 最初の部分 (010) の実行方法は既に知っていますが、064 の 2 番目の部分を取得する方法がわかりません。

どんな助けでも素晴らしいでしょう!

0 投票する
1 に答える
853 参照

assembly - SICXE アセンブリの整数の逆リスト

私の課題では、数字のリストを取得し、SICXE を使用してそれらを逆順に並べる必要があります。私の問題は、反転が実際に発生したかどうかを実際に確認する方法がわからない場合に発生するため、プログラムが希望どおりに機能しているかどうかを実際に判断できません。ダンプを読んで、元のリストがどこにあるのかを知ることはできますが、実際に行ったことが実際に機能したかどうかを確認するために、反転したリストをどこに表示すればよいかわかりません。私は実際にここで尊敬されているリストを見つけることができません. BETA は 10 の予約語で始まるため、15F から開始することになっていると思います。しかし、そこには何も表示されないので、何か間違ったことをしたことを意味すると思いますが、これについて正しいかどうかは実際にはわかりません. 私が問題を解決するにはどうすればよいですか? .lst ファイルと sic.log ファイルを含めます。

.lst ファイル

sic.log ファイル

0 投票する
1 に答える
2879 参照

assembly - SIC アセンブラの出力でオブジェクト コードを生成する際の混乱

だから今、私はオブジェクトコードがどのように生成されるかを理解しようとしていますが、これらの2行は本当に私を混乱させます.誰か私に説明してくれませんか?

0 投票する
1 に答える
494 参照

assembly - 算術のアセンブリ言語構文の問題

アセンブリ言語に関してかなり簡単な質問があります。SIC/XE アーキテクチャは、基本的に教育目的でのみ使用されますが、他のアーキテクチャの一般的な規則に従っています。さて、私の質問と答えについての最初の考えです。

シンボル ALPHA と BETA がソース プログラムのラベルであると仮定します。次の 2 つの一連のステートメントの違いは何ですか?

わかりやすくするために、LDA は算術演算に使用されるレジスタ A にデータをロードします。また、ここに示す SUB や ADD などの演算は、デフォルトでレジスタ A を宣言しなくても機能します。

さて、一見すると、A と B の両方が同等であると想定しています。私の論理は非常に簡単です。A に ALPHA と BETA の差をロードするか、A に ALPHA をロードしてから、レジスタ A の ALPHA から BETA を減算します。まったく同じことを達成しているように見えるのはどれですか? 些細な詳細が欠けていますか、それとも見た目ほど単純ですか?

0 投票する
0 に答える
824 参照

assembly - SIC/XE アセンブリのフィボナッチ

誰かが次のコードの説明を手伝ってくれますか? 次の SIC/XE プログラムに、このプログラムが 3 から始まる最初の 20 個の数値のフィボナッチ数列を計算する方法を説明するコメントを追加しようとしています。

0 投票する
0 に答える
444 参照

assembly - SIC アセンブリ オブジェクト コードでの BYTE 操作の混乱

SIC 用のアセンブラを作成しようとしているときに、これらの質問について考えました。

LABEL BYTE X'AB'

ここで生成されるオブジェクト コードはAB. そのため、オブジェクト コードは例として次のようになります。

001045 4C1046 AB 001045

ここではスペースを使用してコードを区別していますが、オブジェクト コードは次のようになります。

0010454C1046AB001045

では、オブジェクト コードを実行しているときに、ローダーは、ABそれがニーモニック オブジェクト コードの一部ではない定数であることをどのように判断するのでしょうか?

WORD についても同じ質問があります。WORD の長さは 3 バイトかもしれませんが、ローダーは定数コードとニーモニック コードをどのように区別するのでしょうか。

明確化をいただければ幸いです。