問題タブ [opcode]
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.
c# - 動的オブジェクトプロパティポピュレータ(反射なし)
CodeProjectのDynamicBuilderと同様の方法で、リフレクションを使用せずにオブジェクトのプロパティを設定したいと思います。CodeProjectの例は、DataReaderまたはDataRecordを使用してエンティティにデータを入力するように調整されています。私はこれをいくつかのDALで効果的に使用しています。次に、辞書またはその他のデータに依存しないオブジェクトを使用するように変更して、DAL以外のコード(現在リフレクションを使用している場所)で使用できるようにします。私はOpCodesとILについてほとんど何も知りません。私はそれがうまく機能し、反射よりも速いことを知っています。
私はCodeProjectの例を変更しようとしましたが、ILを知らなかったため、2行で行き詰まりました。
- それらの1つはdbnullsを扱っており、それを失う可能性があると確信していますが、その前後の行が関連しているかどうか、またどちらを実行する必要があるかはわかりません。
- もう1つは、以前はデータレコードから値を引き出していたもので、現在はディクショナリから値を引き出す必要があると思います。「getValueMethod」を「property.Value」に置き換えることができると思いますが、よくわかりません。
私はこの猫の皮を剥ぐための代替/より良い方法にもオープンです。
これまでのコードは次のとおりです(コメントアウトされた行は私が固執している行です):
編集:
Marc GravellのPropertyDescriptor実装(HyperDescriptorを使用)を使用すると、コードが100倍単純化されます。私は今、次のテストを行っています:
TypeDescriptor.GetProperties()とPropertyDescriptor.SetValue()の両方のパフォーマンスに関する考慮事項に関するコメントは大歓迎です...
.net - 「OpCode」のインスタンスを構築できますか?
.NET Framework 4.0 では、Reflection API にいくつかの項目が導入されています。これらの項目は、非常に役立つものから私の仕事に不可欠なものまでさまざまです。これらの中には、 、 、 、および new クラスの保護されたコンストラクAssembly
ターModule
がMethodBody
ありLocalVariableInfo
ますCustomAttributeData
。回避するのが非常に面倒な、まだ必要なアイテムがいくつかあります。私がリストしたタイプを拡張する必要があるのと同じ [少数の] グループの人々に簡単に適用できると思います。
今回System.Reflection.Emit.OpCode
は、独自のパラメーターを使用して構造体のインスタンスを構築する方法を探しています。現在、内部コンストラクターを呼び出してインスタンスを作成しています。再利用のために構築されたアイテムをクラスのメンバーとして公開しているため、パフォーマンスに悪影響はありませんpublic static readonly
が、ご想像のとおり、これは非常に最適なシナリオではありません。
OpCode
現在の内部コンストラクターを公開することがOpCode
できない理由はありますかILGenerator
?
編集:これは例です。次のカスタム オペコードを作成することで、一時的なローカル変数を作成しなくても、命令の中間リスト間のバイト コード変換で使用できます。IL を出力する場合は、残りの命令を有効な IL 表現に変換しますが、私の場合、次のステップはカスタム命令swap
を理解する JIT です。プレフィックスswap
を使用しています。これは、有効な IL オペコードによって予約され、使用されていません。Prefix2
0xFD
また、単純な/共通のマネージ コード表現を持たないが、さまざまなネイティブ コード ジェネレーターで使用できる単純なプラットフォーム依存の表現を持つ JIT 組み込み関数にもこれを使用します。これらの 1 つはldthread
(現在のマネージ スレッドのRuntimeThread
表現への参照をロードする) です。
zend-framework - Opcode (APC/XCache)、Zend、Doctrine、オートローダー
PHPページをキャッシュするためのオペコードとしてAPCまたはXCacheを使用しようとしています。Zend と Doctrine で使用していますが、オートローダーに問題があります。
APC で試してみると、次のようになります。
XCache を試してみると、次のようになります。
WindowsボックスでZend 1.9.1、Doctrine 1.1を実行しています。
私のブートストラップは次のとおりです。
私が読んだことから、APCまたはxcacheを使用することは、パフォーマンスのためにほとんど必須ですが、動作させることができないようです. 何か案は?
linux - CPUID命令をトラップする方法を探しています
LinuxプロセスのCPUID命令をトラップしていじるきちんとした方法を探しています。ptrace() をいじって、プロセスによって作成されたすべての実行可能な mmap 領域内のすべての cpuid オペコードにパッチを適用し、それらを int3 に置き換えました。CPUID オペコード バイトが他の長いオペコードの一部として頻繁に現れるため、うまく機能しませんでした。
基本的に、特定のメモリアドレスではなく、オペコードの呼び出しごとにブレークポイントを設定できる方法を探しています。誰でもそれを行う方法を知っていますか?
assembly - JMPから絶対アドレスへ(オペコード)
アセンブラー、C++、および PE ファイルのしくみについてさらに学習する方法として、exe パッカー/プロテクターをコーディングしようとしています。現在、EP を含むセクションがキーと XOR され、復号化コードを含む新しいセクションが作成されるように動作しています。復号化後に元の EP に JMP しようとする場合を除いて、すべてうまくいきます。
基本的に私はこれを行います:
しかし、エントリ ポイントにジャンプする代わりに、ollydbg は、このコードが次のように逆アセンブルすることを示しています。
ollyで手動で変更しようとすると、新しいオペコードが次のように表示されます
0xCBCFFFFF はどこから来たのですか? C++ 側からどのように生成しますか?
php - APC キャッシュは、fastcgi/fcgid として実行されている複数の PHP プロセス間で共有できますか?
PHP が fcgid として実行されている LAMP ボックスを実行しています。APC がインストールされ、正常に動作しています。ただし、各 PHP プロセスは独自のキャッシュを取得します。それぞれ冗長な 30MB の非共有 APC キャッシュを持つ 10 個の PHP プロセスよりも、300MB の共有 APC キャッシュを持つ 10 個の PHP プロセスを持つ方がはるかに理にかなっているからです。
8 か月前にこのトピックに関する前のスレッド ( FastCGI で実行しているときに複数の PHP プロセス間で APC キャッシュを共有する方法は? ) があり、それ以来、この分野で何か進展があったかどうか疑問に思っています。
php - PHPのオペコードを取得する方法は?
そのオペコードは次のとおりです。
php - OpCode キャッシャーで動作する PHP プログラムをコーディングする際に避けるべきこと
PHP OpCode キャッシュをサポートしたい場合、どのようなことを避けるべきですか? 静的呼び出しは悪ですか? __autoload はどうですか?
php - apc_compile_file()は、特定のファイルのメモリ内キャッシュを無効にしますか?
次のPHPコードを実行すると:
この特定のファイルに使用されているメモリ内キャッシュを無効にしますか?
つまり、最初に/ path / to / fileにアクセスすると、APCはそれをコンパイルし、OpCodeをメモリにキャッシュします。ここで、/ path / to / fileに再度アクセスすると、APCはキャッシュされたOpCodeを使用するだけです。ただし、このファイルを変更し、apc.statが0(オフ)に設定されている場合、ファイルは変更されていますが(apc.statがオフであるため)、メモリからのOpCodeが使用されます。私の質問は、ファイルを更新した後にファイルに対してapc_compile_file()を実行すると、メモリキャッシュが更新されるかどうかです。
assembly - x86 命令セットのロードマップ
高レベルのプログラミングを長期間行った後、x86 命令セットの表面に触れただけです。x86 アセンブリ プログラミングについて初めて読んだのは約 20 年前のことですが、Google で調べてみると、無数の命令セットの参照に戸惑いました。新世代のプロセッサ (286、386、486...) を混在させるものから、新しい x86 命令を追加するものまで。AMDのバリエーションは言うまでもありません。
ブートローダーの構築を計画しているので、最初は「標準の x86」に完全に準拠することを考えていましたが、それがいつどこにあるのか、どこに存在するのかさえわかりません。
Intelのドキュメントでさえ同じ道をたどっているようで、別のドキュメントのように、「x86命令セットの標準化が必要です。オペコードの進化は混沌としています」.
標準化の旗印を掲げるのは私の考えではありません。道路を見て、安全に歩ける場所を知りたいだけです。誰かが助けてくれたら、とても感謝しています!