問題タブ [immediate-operand]
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.
assembly - 64 ビットレジスタに 64 ビット定数を追加できますか?
私の64ビットIntelマシンでは、次のコードが機能します:
そして、これとまったく同じように見えるものは警告を生成し、機能しません:
ナンバー1に固執する必要がありますか、それとも何か不足していますか? この振る舞いは不自然に思えます。
コード番号 2 によって生成される警告:
assembly - x86アセンブリでmulを使用して即値を乗算することは可能ですか?
DosBox エミュレーターを使用して x86 のアセンブリを学習しています。乗算を実行しようとしています。仕組みがわかりません。次のコードを書くと:
エラーが発生します。私が使用しているリファレンスでは、乗算で述べられていますが、AX が常にプレースホルダーであると想定しているため、次のように記述します。
値を 2倍al
します。しかし、私にはうまくいきません。
次のことを試すと:
axで結果9を取得します。明確にするために、この図を参照してください。
別の質問: メモリの場所を直接使用して乗算できますか? 例:
assembly - リテラル VS 即時オペランド
私が今学期に履修しているシステムソフトウェアコースでは、アセンブラやその他のシステムソフトウェアについて教えられています。コース全体を読んでいるときに、 LITERALSのトピックに出くわしました。
リテラルと即値オペランドの比較では、両者の唯一の違いは、リテラルは命令の一部としてアセンブルされないのに対し、即値オペランドはアセンブルされるということです。
即値オペランドを使用できるのに、なぜリテラルを使用する必要があるのでしょうか? それらを違うものにするのは何ですか?つまり、いつリテラルを使用し、いつ即値オペランドを使用するのでしょうか?
assembly - MIPS I 命令即値フィールド
このフィールドは、算術および条件分岐命令によって使用されます。
最初の質問は次のとおりです。
即値演算命令と条件分岐で格納できる値の範囲は?
2 つ目は次のとおりです。
MIPS プロセッサに 64 個のレジスタがある場合、これらのレジスタを参照するために即時命令フォーマットをどのように変更しますか? フォーマットを描画してラベルを付けるにはどうすればよいですか?
assembly - x86-64 (GNU Assembler) で 8bit 即値を指定する
x86-64用のアセンブリで特別なルーチンを作成しようとしています(x86の例でも問題ありません)。問題: 私の即時はリンク時にのみ解決されます。
例えば、
2 つのラベル/シンボルの違いを rax に追加します。残念ながら、GNU Assembler は 1 つのパスしか実行しないため (FASM のようなオープン ソースのアセンブラーでさえ複数のパスを実行する理由はわかりません)、それらを解決できないため、リンカーに実行させます。
残念ながら、リンカー用に 4 バイト (32 ビットの即値) が予約されますが、これは私が望んでいるものではありません。ラベルの違いは常に -128 から +127 の範囲内にあるためです。
私の質問は、命令が 8 ビットの即値を持つ必要があることを強制または指定するにはどうすればよいですか? ここの構文は何ですか?AT&T 構文または Intel では、どちらでも問題ありません。たとえば、NASM では次のようにします。
8bit即値を指定します。しかし、GASでこれを行う方法は? 即時自体がわからない場合でも、強制的に8ビットの即時を使用する構文は何ですか...特定の理由から、理想的にはこれをGASで使用したいので、NASMを使用するように言わないでください答え!
編集:申し訳ありませんが、言及するのを忘れていました。はい、ここでは「前方参照」です。両方のラベルは命令の後に定義されているため、GAS はそれらを解決できません。再配置だと思いましたが、「.byte label2-label1」を使用すると、テストしたので確実に機能するため、可能であることはわかっています。何らかの構文があれば...
assembly - ARM MOV および MVN オペランド
2 つのことを行うコードを作成しようとしています。値が ARM データ処理命令で定数として提示できる場合、レジスタ r2 に 1 を返します。このコードはそれを行います (効率が悪い場合は、より良い方法を提供してください)。ただし、MOV または MVN を使用する必要があるかどうかを教えてくれるように変更することも必要です。
assembly - MIPS では、いつ符号付き拡張を使用し、いつゼロ拡張を使用するのですか?
私は個人的なプロジェクトとして MIPS プロセッサを設計していますが、今では非常に混乱した質問に遭遇しました。MIPSでsigned-extendをいつ使用し、いつzero-extendを使用するかを要約することはできません。
私は多くのリソースを検索しましたが、主に次のように述べています。
1) ADDI、ADDIU は両方とも符号付き拡張を使用します。
2) ANDI、ORI、XORI は両方ともゼロ拡張を使用します。
ただし、これらの 2 つの命令では、混乱し始めています。
SLTIU/SLTI
Imagination の「MIPS Architecture for Programmers Volume II-A: The MIPS instruction set Manual」ページ 368 には、次のように記載されています。
16ビットの即値は符号付き拡張であると明確に述べられていますが、次のステートメントがわかりません。
[0, 32767] または符号なし範囲の最大 [max_unsigned-32767, max_unsigned] の終わり。
また、次のように、16 ビットの即値はゼロ拡張であると言う人もいます。
さて、MIPS における符号付き命令と符号なし命令の正確な違いを説明できる人はいますか?