問題タブ [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.
opcode - 特定のx87FPU命令のデコードのあいまいさ
x87FPU命令のデコードに関してあいまいなケースに直面しています。Vol2AIntelの命令セットマニュアル[1]の3-380ページから抜粋した次の命令を参照してください。
これらの命令は両方とも同じシングルバイトベースのオペコードを持っています0xD9
。最初の命令の拡張オペコードは0x00
。です。拡張オペコードは、ModR/Mバイトの「reg」フィールドで指定されます。ただし、2番目の命令は、「レジスタを取得するために追加」機能を備えた2バイトのオペコードです。この意味は:
これら2つの指示を区別することに関して私は小さな問題を抱えています。小さな例は次のとおりです。
ここで、オペコードシーケンスを取得するとします"D9 C1"
。それが命令"FLD m32fp"
であるかどうかを確認する必要がある場合は、ModR/Mバイトの「reg」フィールドが0x00であるかどうかを確認する必要があります。もしそうなら、それは確か"FLD m32fp"
に使用されている命令です。
のバイナリ表現はC1
です"1100 0001"
。bit0がLSBであるとすると、bit3-bit5(両端を含む)はModR/Mバイトの「reg」フィールドを構成します"C1"
。0x00
確かに(3つのゼロ)であることがわかります。
そこで、オペコードシーケンス"D9 C1"
を命令にマッピングし"FLD m32fp"
ます。"ecx"
さらにデコードすると、この場合、オペランドが実際になることがわかります。しかし、これに"FLD ST1"
もオペコードシーケンス"D9 C1"
があり、これがそのオペコードシーケンスに使用されている実際の命令であることがわかります。
"D9 C1"
本質的に、オペコードシーケンスが命令に対応し、では"FLD ST1"
ないことをどのように確認でき"FLD ecx"
ますか?
"FMUL"
ここと同じようにオペランドをとるので、命令についても非常によく似た問題が発生"FLD"
します。
[1] http://www.intel.com/design/intarch/manuals/243191.HTM
よろしくお願い
いたします。HrishikeshMurali
php - PHPオペコードを作成して実行します。実行する方法?
PHPオペコードを記述してファイルに保存し、Zend Engineに実行させるにはどうすればよいですか?それがトリックを行う限り、どんな方法やハックも歓迎されます。
assembly - アセンブリ言語のシンボリック オペコード
16 進マシン命令をシンボリック オペコードに変換するのはかなり混乱しています。このセクションからいくつかのレビューの問題があります。
これらの問題を処理する方法がわかりません。また、概念に頭を悩ませることもできません。誰かが私にそれをもっと簡単な言葉で分解できますか?
.net - VB.NET の動的メソッド内でメソッドを呼び出す
そのため、過去 1 時間、VB.NET で動的メソッドを使用して、呼び出し元のクラス内でサブを呼び出そうとしました。
私はいくつかのことで運がありませんでした。まず、MSDN (http://msdn.microsoft.com/en-us/library/ms228971.aspx) の例に従おうとしているときに、メソッドを Sub にすることができず、何も返さなかったので、別のメソッドを呼び出したいだけです。
例えば。
問題は、何も返さないで、OtherMethod() を呼び出したいだけで、コード内で (デリゲートを介して) 動的メソッドを呼び出す方法が欲しいということです。MSDN はまったく役に立ちませんでした。私がやりたいことを実行する方法を説明しようとするものさえ何も見つかりません。
どんな助けでも大歓迎です。
c - ida pro によるパッチ適用
私はこのようなプログラムを持っています
somma 関数の呼び出しを diff 関数に置き換えるためにパッチを適用しようとしています。E8 79 FF FF FF では、diff 関数には op E8 70 FF FF FF があるので、私がやろうとしたことは、somma 関数の op を diff のものに置き換えることです。したがって、私の somma op は E8 70 FF FF FF になりましたが、実行しようとするとセグメンテーション違反が発生します。なんで?私のエラーは何ですか?
EDIT これらは私の作品の画面です。
php - ソースコードが変更されたときにXcacheがphpオペコードをリロードできない
PHPソースコードが変更されたときに、Xcacheまたは他のPHPオペコードキャッシャーはPHPオペコードを自動リロードできますか?
dalvik - dalvik命令を解析する際に、可変長引数はどのように解析されますか?
両方とも、同じ操作と同じオペランドmove vA, vB
を含みます。move-wide vA, vB
オペコードを除いて、すべてが同じです。アプリケーションの命令で使用されるオペランドを出力する必要がある状況にあります。したがって、指示が表示されmove vA, vB
たら、印刷する必要がありますmove va(*contents of va*), vb(*contents of vb*)
。
これは、4バイトのレジスタの場合は正常に機能します。しかし、move-wide
指示に遭遇したときは、vAの内容と次の仮想レジスタの内容、vBの内容と次の仮想レジスタの内容を印刷する必要があります。
これらを解析する標準的な方法は何ですか?
java - Java クラス ファイルの ACC_SUPER アクセス フラグの目的は何ですか?
invokespecial
JVM 命令は、新しいオブジェクトを作成するときに初期化メソッド ( ) を呼び出すために使用されます<init>
。命令の説明は、スーパークラスのコンストラクターを呼び出すか、現在のクラスのコンストラクターを呼び出すかの決定は、ファイルACC_SUPER
内に設定されたフラグの状態に依存することを示唆しています (ただし、明確にはしていません)。class
Sun JVM 仕様から:
次に、次の条件がすべて真でない限り、解決されたメソッドが呼び出し用に選択されます。
- ACC_SUPER フラグ (表 4.1「クラス アクセスとプロパティ修飾子」を参照) が現在のクラスに設定されています。
--ソース(invokespecial
オペコード定義)
ACC_SUPER フラグの設定は、invokespecial 命令の 2 つの代替セマンティクスのどちらを Java 仮想マシンが表現するかを示します。ACC_SUPER フラグは、Java プログラミング言語用の Sun の古いコンパイラによってコンパイルされたコードの後方互換性のために存在します。Java 仮想マシンのすべての新しい実装は、この仕様に記載されている invokespecial のセマンティクスを実装する必要があります。Java 仮想マシンの命令セットに対する新しいコンパイラはすべて、ACC_SUPER フラグを設定する必要があります。Sun の古いコンパイラは、ACC_SUPER が設定されていない ClassFile フラグを生成しました。Sun の古い Java 仮想マシンの実装では、フラグが設定されていても無視されます。
--ソース(ClassFile
形式)
定義では、フラグは古いコンパイラとの下位互換性を保つためのものであると述べています。しかし、それは矛盾し続けますSun's older Java virtual machine implementations ignore the flag if it is set.
フラグはまだinvokespecial
オペコードで使用されていますか? 私が知る限り、それは何の目的も持たないように思われ、それがかつてあったことを示唆するリソースを見つけることができません.
ありがとう。
php - opcode キャッシュがサーバーで実行されているかどうかを確認する方法は?
サーバーへの SSH アクセスなしで、PHP opcode キャッシュがインストールされ、サーバー上で実行されているかどうかを確認することは可能ですか? 私は phpinfo() をチェックしましたが、APC や eAccelerator への参照を確認できませんでしたが、他のオペコード キャッシュ システムがあることは認識しており、phpinfo() をチェックするだけでいずれかの方法で通知するのに十分かどうかは完全にはわかりません。