問題タブ [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.
compilation - プログラムは、拡張命令セットでオペコードを使用するタイミングをどのように認識しますか?
SSE4 では、文字列検索、特に xml 解析に役立ついくつかの命令が追加されたことを知っています。では、これらの命令を利用するプログラムを作成したとします。そのプログラムを、SSE4 命令セットのない古いプロセッサを搭載した別のコンピューターに移動するとどうなりますか? プログラムが壊れるだけですか?
コンパイラーが最適化プロセスの一部として使用する命令を生成すると仮定していますが、コンパイラーが古い i386 で実行されていて、ソフトウェアが i486 をターゲットにしている場合、それらの 6 つの命令が失われるのでしょうか?
それがどのように機能するかというと、オーディオ制作ソフトウェアを持っているのはどうしてですか。それは、インストールしたどのコンピューターでも正常に動作しますが、これらの拡張命令を利用すると主張しています。ランタイム チェックと別のコード パスだけですか?
Javaバイトコードやmsilなどの中間言語にどのように影響しますか?
x86 - 新しいISA命令とi386
最新のコンパイラ(GCC、Intel CC、VCなど)を使用して今日コンパイルされたすべてのx86(i386)バイナリは、Intel 386マシン(OS機能などの外部依存関係を考慮)で実行されることを理解しています。 20年前のコンピューターにWindows7をインストールして実行する人々のYouTubeのビデオ。
しかし、MMXやSSEなどのISA拡張機能がどのように機能するのかわかりません。プログラムのコードに拡張命令が含まれているが、その命令がプロセッサでサポートされていない場合は、プログラムがクラッシュする必要があります(おそらくプロセッサがOSに割り込む)。私が考えることができる唯一の解決策は、プログラムのバイナリが命令がサポートされているかどうかを確認し、サポートされていない場合は、すべてのプラットフォームでサポートされることが保証されている最小公分母コードを実行することですが、それは確かにバイナリを非常に作成することができます大規模で、拡張機能でしたが、浮動小数点演算のように実際には標準となった命令についてはどうでしょうか。それは、FP操作を行うすべてのi386バイナリにソフトウェアFPエミュレーションも含まれていることを意味しますか?
プログラムが命令サポートのチェックを行う場合、それはどこでそれらを行いますか?タイトなループがある場合は、ループ内でチェックを実行する必要はありません。コンパイラーは、あらゆる状況でそれを最適化する方法をまだ十分に理解しているとは思わないので、目に見えるコンパイラー・オプションの欠如は奇妙です。
命令の発行を制御するためのコンパイラまたはリンカのVCプロジェクト設定に設定またはオプションが見つかりません。最適化についてはいくつかありますが、私が期待する制御を与えるものは何もありません。
そして、AMDの「3DNow!」はどうですか?拡大?3DNowは、MMXの拡張機能であることが意図されているため、独自の命令と独自の側面がいくつかありますが、VCコンパイラまたはリンカー設定で3DNowへの参照を見つけることができないため、コードを記述している場合は、コンパイラに3DNowを使用させることはできますか?指示(MMXではなく)?
また、3DNowに関するウィキペディアの記事には、AMDがプロセッサからいくつかの3DNow命令を削除したと記載されています。これらの命令が存在すると想定するコードが存在する場合、それは機能しなくなりますか?
x86 - OSカーネルのビルドはx86とARMの両方で実行できますか?
つまり、このビルド(x86とARMアーキテクチャドライバーの両方を含む)はx86コンピューターで実行でき、他のARMデバイスでも実行できます。
現在、両方の命令セットをサポートするCPUはありません。しかし、理論的には、それは実現するのでしょうか?電源を入れると、CPUはプログラムがどの命令セットにあるかを確認できますか?
assembly - IA32 がメモリからメモリへの移動を許可しないのはなぜですか?
Intel アーキテクチャ IA32 では、movl や movw などの命令は、両方がメモリ ロケーションであるオペランドを許可しません。たとえば、命令 movl (%eax), (%edx) は許可されていません。なんで?
processor - 命令セットアーキテクチャで「メモリ」の前に「実行」するのはなぜですか?
私は3年前にプロセッサアーキテクチャを学びました。
今日まで、私はシーケンシャルインストラクションの前になぜexecute
位置していたのか理解できません。memory
命令の実行中に、[ mov (%eax) %ebx]
メモリにアクセスする必要はありませんか?
ありがとう!
operating-system - OS特権レベルとハードウェア特権レベル
OSの特権レベルと基盤となるハードウェアの特権レベルの違いは何ですか?すべてのシステムコールがカーネルへのトラップを引き起こしますか?システムコールがトラップを引き起こすのはなぜですか?アセンブリコードのINなどの特権命令が原因ですか?
c - 動的メモリを使用して新しい Intel 命令で 128 ビット配列を割り当てる方法は?
私は新しい Intel 命令を使用する新しいので、今まで静的メモリを使用していたので、次のように宣言します。
しかし、この新しい命令に対してmalloc
or but を使用して、メモリを動的に割り当てることができるかどうか疑問に思っています。calloc
compiler-optimization - 分岐命令と選択命令の違い
The 'select' instruction is used to choose one value based on a condition, without branching.
分岐命令と選択命令の違いを知りたい(できればx86アーキテクチャとPTXの両方)。私の知る限り、select
分岐命令に比べて最適ですが、明確な画像はありません。
assembly - x86-64でレジスタ名に数字を使用したのはなぜですか?
rax
AFAIK x86-64 は、Intel x86 から派生したもの ( 、rcx
など) にr8
-と呼ばれる多数の汎用レジスタを追加しr15
ます。
なぜ彼らは新しいレジスターにこのような名前を付けたのですか? rfx
既存の命名規則に従って, rgx
...のように呼ばないのはなぜですか?
mips - 1 つの命令を使用して目的のレジスタに配置できるすべてのビット パターンのセット
次の一連の MiniMIPS 命令があるとします。
MiniMips 命令では、レジスタをゼロ ビット パターン (すべてのビットがゼロ) に初期化するなどの一部のアクションで、それを実行できる複数の命令を持つことができます。
私の質問は、特定の命令セットからの単一の命令を使用して、目的のレジスタに配置できるすべてのビットパターンのセットは何ですか。