問題タブ [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.
iphone - 新しいアルゴリズム設計を最適化するための操作の時間値を見つける方法は?
私の質問は、iPhone、iPod、および iPad に固有のものです。アーキテクチャが大きな違いを生むと想定しているためです。どこかに(おそらくさまざまなチップの)仕様があるか、特定の命令ごとに T を測定する信頼できる方法があることを願っています。プロセッサの総使用時間や使用メモリなどを測定するために、いくつものツールを使用できることはわかっています。より低いレベルで定量化したいと考えています。
これで、アルゴリズムの主要部分を何回通過したかを知ることができました。たとえばn * (n-1)
、単純な実装では時間を反復し、別の実装ではn
(最良の場合) とn + n * (n-1)
(最悪の場合) の間を反復します。また、命令 (+ - = % * /、および論理ステートメント) の総数を合理的にカウントし、それらのカウントを比較することもできますが、それは各操作の重みが同じであると仮定した場合です。また、論理ステートメント(if、else、for、while)と数学演算子の実際の時間値を重み付けする方法がわかりません...毎回「+」と同じくらい「if」ですこれを使って?この情報がどこにあるのか知りたいです。
したがって、明確にするために、私の目標は、CPU (または GPU または任意の U) にどれだけのプロセッサ時間を要求しているかを調べて、プロセッサ時間に最適なアルゴリズムを設計できるようにすることです。iOS ハードウェアをどこから始めたらよいか教えてもらえますか?
編集:開発者ポータルのClockServices.cと SIMD へのこのリンクは、これに興味のある人にとっては良い出発点かもしれません。今夜、あと数杯コーヒーを飲めば乗り切れるかもしれません ;)
endianness - ビット演算を使用して、リトルエンディアンをビッグエンディアンにどのように変換しますか?
最初の4ビットをスタックに入れて(左から右に読んで)、レジスターに入れてx回シフトして、の右側に配置するようなことをしたいと思うでしょう。番号?
何かのようなもの
1000 0000 | 0000 0000 | 0000 0000 | 0000 1011
スタック:下-1101-上左に28回シフトします
次に、最後の4ビットと同様のことを行いますが、右にシフトしてレジスタに格納します。
次に、あなたとそれは0の空の戻り値を持ちます
もっと簡単な方法はありますか?
assembly - 回転命令 (ROL、x86 の RCL) の目的は何ですか?
一部の CPU が持つ回転命令 (たとえば、x86 の ROL、RCL) の目的は何なのか、いつも疑問に思っていました。これらの命令を利用するソフトウェアはどのようなものですか?
最初は暗号化/ハッシュ コードの計算に使用できると考えていましたが、これらのライブラリは通常 C で記述されており、これらの命令に対応する演算子はありません。(編集者注:回転命令にコンパイルされる C または C++ の記述方法については、C++ での循環シフト (回転) 操作のベスト プラクティスを参照してください。また、最適化された暗号ライブラリには、特定のプラットフォーム用の asm が含まれていることがよくあります。)
誰かがそれらの用途を見つけましたか? なぜ彼らは指示セットにどこに追加したのですか?
algorithm - ブースのアルゴリズムの本質とは?
ブースアルゴリズムの本質とそれを機械語で使用する方法を説明できる人はいますか?
c++ - aesimc 命令で誤った結果が返される
Sandy Bridge で利用可能なAES マシン命令 (Intel のホワイト ペーパーに基づく) を使用して AES 暗号化を実装しようとしています。残念ながら、復号化用のラウンド キーを生成する段階で停止してしまいました。具体的には、 ( Inverse Mix Columnsaesimc
操作を適用する) 命令は正しくない結果を返します。
彼らの論文には、次の例があります。
したがって、入力では:
を使用して次を取得します_mm_aesimc_si128()
。
返されたはずです:
同じ結果ではありません。これはなぜですか?
再現したい場合は、以下のコードでテストしました(-maes -msse4
コンパイル時の引数を覚えておいてください):
編集: Intel のホワイト ペーパーの例は間違っていました。Hans が示唆したように、私のチップはリトルエンディアンなので、前後にバイト交換が必要です。
processor - プロセッサ設計 - ハザード管理ユニット
セル SPE プロセッサを設計しています。レジスタ ファイルからデータを取得する前に、データ ハザードをチェックする必要があります。必要なストール サイクル数を特定する最善の方法と、パイプラインをどこでストールするかについてどのような設計上の決定を行う必要がありますか? この件に関する一般的な見解を探しています。
assembly - PowerPCオペコードテーブル?
私は自分の学習目的でPowerPCエミュレーターを開発することに興味があります。PowerPCアセンブリでのプログラミングに関するかなりの量のリソースを見つけましたが、かなりの時間をかけて調べた後、まだどこにも命令/オペコードマッピングテーブルを見つけることができませんでした。もちろん、エミュレーターを作成できるようにするには、オペコードが必要です。どこにありますか?
c++ - CPUがSSE3命令セットをサポートしているかどうかを確認するにはどうすればよいですか?
次のコードは、CPUがSSE3命令セットをサポートしているかどうかを確認するために有効ですか?
このIsProcessorFeaturePresent()
機能の使用は、WindowsXPでは明らかに機能しません。
instruction-set - AMD Open64:最適化された数学関数
Open64には、 Intel Short Vector MathLibraryOperationsと同等のものがありますか。
ありがとうございました。