問題タブ [sign-extension]

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 投票する
1 に答える
237 参照

c - アセンブリ IA32 の符号拡張

私はアセンブリが初めてで、IA32 アーキテクチャを使用しています。次の操作を生成する関数をコーディングしようと.sしています: C + A - D + B

  • A は 8 ビット変数です
  • B は 16 ビット変数です
  • C と D は両方とも 32 ビット変数です

この関数は、C で出力する必要がある 64 ビット値を返す必要がありますが、これを理解することはできません。

私はこれを試していますが、正の数のテストでは機能しますが、負の数で作業しているときは機能せず、理由がわかりません。

私の機能sum_and_subtract.s

正しい例は次のとおりです。

  • A = 0、B = 1、C = 0、D = 0; 期待値 = 1 -> 結果 = 1 であり、この例では機能します

エラーは次の場合に表示されます。

  • A = 0、B = 0、C = 0、D = 1; 期待値 = -1 -> 結果 = 256

あなたのコメントを見た後、長い長い結果を出力するメインコードを書くのを忘れていました。

main.c :

ここにあります。

私はこの他のファイルを持っていますsum_and_subtract.h

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

assembly - avrでint8をint16に変換する方法

私のコンピューター サイエンスのクラスでは、今週 AVR の作業を始めたばかりです。8 ビット int を 16 ビット int に変換するために必要なビット操作に問題があります。文脈のために、私はarduinoからプログラムを実行しています。

これは私がこれまでに持っているものです:

これは、この Web サイトでドキュメントや同様の問題を少し調べて得たものですが、ここからどこに行くべきか、またはこれが正しいかどうかさえわかりません。どんな助けでも大歓迎です!

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

assembly - MIPS I 型指示記号拡張についての混乱

私は MIPS 命令を学んでいますが、即値を拡張する必要がある I タイプの命令をテストすると、次の結果について混乱します (それらはすべて MARS で実行されます)。

  1. ソース コード行 があるとしますori $s1, $s2, 0xfd10。MARS は基本的なアセンブラ命令 ori $17, $18, 0x0000fd10を提供します。これは、16 ビットの即値oriゼロ拡張する必要があるためです。機能を変更するだけoriandi、つまりソース コードの行 andi $s1, $s2, 0xfd10だけを変更すると、MARS はほぼ同じ基本的なアセンブラ命令 andi $17, $18, 0x0000fd10を提供します。ただし、 とは異なりori符号拡張andiを使用する必要があります。したがって、基本的なアセンブラ命令は.andi $17, $18, 0xfffffd10

andiまた、ゼロ拡張を使用する必要があります。最初の質問は無視してください。

  1. slti rt, rs, immたとえば、を使用しようとするとslti $s1, $s2, 0x8000、MARS は行の実行を拒否し、エラー メッセージは"0x8000": operand is out of range. 即時が範囲外である理由はわかりません。即時を少し下に変更すると、たとえば 、slti $s1, $s2, 0x7fff機能し、即時が に拡張され0x00007fffます。私の期待は、0x8000に拡張する必要があること0xffff8000です。私の理解に何か問題がありますか?