問題タブ [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.
assembly - *すべての* MIPS 命令の説明はどこにありますか
次の機能を備えた32ビットMIPS命令/オペコードのリストを見つけることができるWebサイトを知っている人はいますか?
- 実際のオペコードとアセンブリ言語マクロ (疑似命令) を明確に区別
- 特権レベルによる違いも含めて、命令の動作について説明します。
- 命令が導入/改訂された命令セットのリビジョンを示します (例: MIPS I、MIPS II、MIPS32 など)。
- syscall などの特権命令が含まれます。
私は、主に教育目的で、命令セットの「一部」を文書化した多数の Web サイトを知っています。浮動小数点命令や特権命令を省略したり、部分的にしか説明しない傾向があります。
ご参考までに、私は MIPS プロセッサ サブセットの Verilog コードを見て、それが実際の MIPS プロセッサの命令セットにどの程度準拠しているかを正確に把握しようとしています!
linux - Linux のバイナリ ファイル (ライブラリまたは実行可能ファイル) のターゲット ISA 拡張子を決定する
Via C3 プロセッサを搭載した Advantech POS ボード上の (かなり古い) FC3 で実行されている Java アプリケーションに関連する問題があります。Java アプリケーションには、JNI 経由でアクセスされるコンパイル済みの共有ライブラリがいくつかあります。
C3 プロセッサ経由は i686 と互換性があるはずです。少し前に、同じプロセッサを搭載した MiniItx ボードに Ubuntu 6.10 をインストールした後、前の説明が 100% 真実ではないことがわかりました。Ubuntu カーネルは、C3 プロセッサに設定された i686 のいくつかの特定のオプション命令が不足しているため、起動時にハングアップしました。i686 セットの C3 実装にないこれらの命令は、i686 最適化を使用する場合、GCC コンパイラによってデフォルトで使用されます。この場合の解決策は、Ubuntu ディストリビューションの i386 コンパイル バージョンを使用することでした。
Java アプリケーションの基本的な問題は、FC3 ディストリビューションが別の PC (今回は Intel P4) の HD のイメージから複製することによって HD にインストールされたことです。その後、ディストリビューションを実行するには、いくつかのパッケージ (カーネルのものなど) を i386 コンパイル済みバージョンに置き換えるなど、いくつかのハッキングが必要でした。
問題は、しばらく作業した後、システムが跡形もなく完全にハングすることです。いくつかの i686 コードがシステムのどこかに残っていて、いつでもランダムに実行される可能性があるのではないかと心配しています (たとえば、サスペンド モードからの回復後など)。
私の質問は:
- バイナリ ファイル (実行可能ファイルまたはライブラリ) が必要とする特定のアーキテクチャ拡張機能を確認するツールまたは方法はありますか?
file
十分な情報を提供しません。
multicore - プロセスが実行されるコアを制御する方法は?
複数のプロセスまたはスレッドを使用するプログラムを作成する方法を理解できます。新しいプロセスを fork() して IPC を使用するか、複数のスレッドを作成してそのような通信メカニズムを使用します。
コンテキストの切り替えも理解しています。つまり、CPU が 1 つしかない場合、オペレーティング システムは各プロセスの時間をスケジュールします (そして、スケジューリング アルゴリズムは無数にあります)。これにより、複数のプロセスを同時に実行することができます。
マルチコア プロセッサ (またはマルチプロセッサ コンピュータ) を使用できるようになったので、2 つの別々のコアで 2 つのプロセスを同時に実行できます。
私の質問は、最後のシナリオに関するものです。カーネルは、プロセスが実行されるコアをどのように制御しますか? 特定のコアでプロセスをスケジュールするシステム コール (Linux または Windows) はどれですか?
私が尋ねている理由: 私はコンピューティングの最近のトピックを調査する学校のプロジェクトに取り組んでおり、マルチコア アーキテクチャを選択しました。そのような環境でプログラミングする方法 (デッドロックや競合状態を監視する方法) に関する資料はたくさんあるようですが、個々のコア自体の制御に関する資料はあまりありません。いくつかのデモンストレーション プログラムを作成し、アセンブリ命令または C コードを提示して、「2 番目のコアで無限ループを実行しています。その特定のコアの CPU 使用率のスパイクを見てください。」 .
コード例はありますか? それともチュートリアル?
編集:明確にするために-これはOSの目的であり、OSにこれを任せるべきだと多くの人が言っています。同意します!しかし、私が求めている (または感触を得ようとしている) のは、オペレーティング システムがこれを行うために実際に行っていることです。スケジューリング アルゴリズムではありませんが、「コアが選択されたら、そのコアが命令のフェッチを開始するには、どの命令を実行する必要がありますか?」
assembly - アセンブリ言語と機械語の関係は?
アセンブリ言語と機械語 (同じ基本システムの場合) は本当に同じですか? これら2つの概念に違いはありますか?
java - JVM命令セットのCPUサイクルとバイトサイズ
Java仮想マシンの命令セットページには、aaload、aastoreなどのニーモニックに関する情報が表示されます。
ただし、これらのニーモニックが使用するCPUサイクルについては言及されておらず、これらのニーモニックのバイトサイズやワードサイズに関する情報もありません。
この情報がどこにあるか考えてみませんか?
operating-system - プログラムはどのように実行されますか?オペレーティングシステムはどこで機能しますか?
プログラムは、ある言語からASM->マシンコード(直接実行可能)にコンパイルされます。これがプラットフォームに依存すると言われる場合、形成されたバイナリは、x86、x86-64などの同じ命令セットアーキテクチャを備えたCPUでのみ(正しく)実行されることを意味します。ISAの違いにより、他のプロセスで(誤って)実行される場合と(まったく)実行されない場合があります。右?
さて、バイナリの概念は私を混乱させています。すべては「機械語コード」と「CPU」に関するものです。OSはどこで機能しますか?つまり、コンパイルされたバイナリには、メモリにロードされたときにCPUへの直接命令が含まれています。&CPUは一度に1つの命令を実行します。プロセス管理のリンクテキストを除いて、オペレーティングシステムの役割はどこにもわかりませんでした。オペレーティングシステムに関係なく、同じISAのCPUで実行されている必要があります。右?
しかし、そうではありません。Windowsマシンでx86へのコードをビルドした場合。Macx86マシンまたはLinuxx86マシンでは動作しません。
ここに何かが足りません。私の混乱を解消してください。
assembly - MOV と LEA の違いは何ですか?
これらの指示の違いを知りたい:
と
assembly - x86 asm 命令セット: _検索可能な_オフライン リファレンスはありますか?
私は組み立てに少し慣れていないので、時々 x86 の指示を調べる必要があります。他のすべてのオペコードをウェブで検索すると、しばらくすると面倒になります。次に、Intel リファレンス マニュアルがありますが、目次ページには pdf ファイルのさまざまなセクションへの直接リンクがなく、「本当の」ページ名がリストされていませんが、代わりに [章]-[相対ページ] で番号が付けられています。 number] であり、それを使用して opcode のページ番号を推測する必要があります。
問題は、x86 命令について効率的に検索できるオフライン リファレンスがあるかどうかです。
CheatEngine 逆アセンブラが、逆アセンブリでクリックした各オペコードについていくつかの情報を提供したことを漠然と覚えています。ただし、これは Windows 専用であり、最近ではほとんどの場合 Linux を使用しています。しかし、そのようなものはいいでしょう。
編集:まあ、おそらく一意であるpdfでその章ページ番号文字列を検索できることに気づきました。しかし、オペコードを入力して情報をすぐに取得できるものが望ましいと思います。