問題タブ [instruction-set]
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.
windows - 非 x86 ホスト マシンでエミュレーターから Windows を実行する方法は?
Windows は x86 ベースの CPU でのみ実行されます。POWER、SPARC、ARM などの x86 アーキテクチャ以外の CPU で Windows を実行することはできますか?
MacOS 内の PowerPC で Windows を実行できるプログラム、つまりVirtual PC 7 for Macがあることは知っていますが、詳細は不明です。私が仮想化について話しているのは、HOST マシンと GUEST マシンの CPU アーキテクチャが異なることを許容するという意味です。
.net - 仮想マシンの GA フレームワーク
仮想マシンで命令セットを進化させて抽象的な問題を解決するための .NET 遺伝的アルゴリズム フレームワークを知っている人はいますか? 仮想マシンがプール内で自己増殖し、予想される入力が与えられた場合に「良い」出力を持つデータセットによって決定されるフィットネス関数に対して進化できるようにするフレームワークに特に興味があります。
assembly - Intelプロセッサのダミー操作処理
確かに、ちょっとばかげた質問があります。基本的に、一連のダミー、つまり NOP 命令を効率的に実行するために Intel プロセッサによって提供される特別なメカニズムがあるかどうか疑問に思っています。たとえば、NOPS を識別して破棄し、代わりに有用な命令をフェッチしようとする、ある種のプリフェッチ メカニズムがあると想像できます。または、これらの NOPS は通常の命令として実行ユニットにディスパッチされます。つまり、各サイクルで大まかに 5 つの nop を処理できます (5 つの実行ユニットがあると仮定して)
ありがとう、ラインハルト
assembly - 他のアーキテクチャでのZ80DJNZ命令に相当しますか?
最初に少し背景。z80 CPUには、ループと同様の方法で使用できるDJNZと呼ばれる命令があります。for
基本的に、DJNZはBレジスタをデクリメントし、ゼロでない場合はラベルにジャンプします。例えば:
もちろん、通常の比較命令とジャンプ命令を使用して同じことを行うことができますが、多くの場合、単一の命令を使用すると便利です。
それが邪魔にならないように、私の質問は、他のCPUアーキテクチャに同様の制御命令が含まれているのかということです。
assembly - x86命令セットを学ぶための最も簡単で最良の方法は?
x86命令セットアーキテクチャについて学びたいです。x86のアセンブリを学ぶという意味ではありません。マシンコードベイビーを理解したい。
その理由は、x86用のアセンブラーを作成したいからです。次に、そのアセンブリにコンパイルするコンパイラを作成します。
x86命令セットをカバーするIntelマニュアルとAMDマニュアルがあることを私は知っています。しかし、それらは非常に大きくて密度が高いです。
x86命令セットアーキテクチャを学習するためのより親しみやすい(おそらくチュートリアルの)アプローチがあるかどうか疑問に思います。
x86 - CPUの新しい命令セット
新世代のCPUごとに、MMX、3DNOW、SSEなどの新しい命令のセットが導入されます。
それらについての一般的な質問はほとんどありません。
- たとえばSSE命令を使用するプログラムがある場合、SSEをサポートしていないCPUで実行できますか?
- はいの場合、それらの命令がより多くのより単純な命令に変更されることを意味しますか?
- そうでない場合、そのような新しい命令の実際のパフォーマンスへの影響は、ほとんどのCPUがそのようなテクノロジをサポートする数年後になることを意味します(したがって、非互換性はありません)。
- 最適化を使用してC++プログラムをコンパイルすると、この新しい命令の一部が使用されるということですか?(私はそれが多くの要因、特にコードに依存することを知っていますが、私はいくつかの一般的な答えが欲しいです)。それとも、それらは主にasmで書かれたプログラムのために予約されていますか?
assembly - x86 アセンブリで各命令がコンパイルされる bye の数は?
住所が不明な場合、自分で計算できますか?
つまり、これしかありません:
assembly - 機械語のOISCでSBNを使用するフィボナッチ
OISCアーキテクチャでSBNを使用してフィボナッチ数列を生成したいと思います。私の最初のアプローチは、最初にアセンブリ言語で実装してから、機械語に変換することです。最初のステップでは、2つのレジスタに0と1を格納してから、0から1を減算し、その後のステップで1を繰り返し減算します。負の数を生成するたびに、負の数であるため、分岐して絶対値検索命令をフェッチします。
私のアプローチは正しいですか?OISCの意味での私の混乱。私が間違っている場合は訂正してください。減算を実行してから絶対値を見つける場合は、毎回2つの命令を使用していることを意味します。または、OISCプロセッサでは、これらの両方の命令が同時に実行されるため、私のアプローチは正しいことを意味します。
c - LEA EAX、[EAX] のポイントは何ですか?
Microsoft C コンパイラでコンパイルされたバイナリでこの命令を見つけました。明らかに EAX の値を変更することはできません。では、なぜそこにあるのでしょうか。
assembly - x86CMP命令の違い
質問
次の2つのx86命令の(重要な)違いは何ですか?
バックグラウンド
私はJavaアセンブラーを構築しています。これは、コンパイラーの中間言語がWindows-32実行可能ファイルを生成するために使用します。
現在、私は次のコードを持っています:
TEXTセクションに2つのCMP命令を含む有効な実行可能ファイルを出力します。「text.exe」に出力された実行可能ファイルは何も面白いことはしませんが、それは重要ではありません。クラスCompare
はCMP
命令のラッパーです。
上記のコードは(OllyDbgで検査)を生成します:
違いは微妙です:39
バイトオペコードを使用する場合:
それは私に彼らの同義性となぜこれが存在するのかについて疑問に思います。