問題タブ [opcodes]
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.
lua - 通常のオペコードとMSBが設定されたオペコードの違いは何ですか?
通常のオペコードとMSB(最上位ビット)が設定されたオペコードの違いは何ですか?
例:
最初のオペコード(0x5E / 1011110)にはMSBが設定されており、2番目のオペコード(0x1E / 0011110)には設定されていません。
編集:「バイト」を「ビット」に修正しました。
assembly - i386オペコードを命令にデコードする
私はしようとしていますi386オペコードの「デコード」を学ぶために利用できる良いリソースはありますか?ほとんどのウェブサイトは命令をエンコードする方法について話しますが、命令へのオペコードをデコードする方法について何かを教えてくれるものはどこにも見つかりません。
いくつかの逆アセンブラのソースコードを見てきましたが、オペコードを命令にデコードする方法についてのドキュメントが必要です。
よろしくお願い
いたします。HrishikeshMurali
assembly - 同じオペコードで複数の命令が機能するのはなぜですか?
私は命令とそれに対応するオペコードを見ていました。「je」や「jz」などの命令のオペコードは同じです。
なぜそのような冗長な指示があるのでしょうか?
アセンブリコーディングが簡単になるからですか?つまり、場合によっては「等しい場合にジャンプ」し、他の場合には「ゼロにジャンプ」する方が理解しやすいということです。しかし、最近では実際にアセンブリでコーディングすることはありません。
assembly - (レジスタを使用せずに)イミディエートバイトをダイレクトメモリロケーションに移動するためのx86オペコードはありますか?
特定のイミディエートバイトサイズの数値をダイレクトメモリロケーションに「移動」する方法はありますか?つまり
値16
をメモリアドレスに書き込むには65535
?もしそうなら、それはどのオペコードですか、それとも最初にメモリアドレスをレジスタに格納する必要がありますか?
fetch - Z80メモリリフレッシュレジスタ
別の無害なZ80の質問でもう一度:-)エミュレータコアが現在構造化されている方法で、オペコードバイトがメモリからフェッチされるたびにメモリリフレッシュレジスタの下位7ビットをインクリメントしています-これは、マルチバイト命令の場合などです。 DDまたはFDを開始するものとして、レジスタを2回インクリメントしています。またはRLC(IX + d)などの命令のインスタンスでは3回(opcode1-opcode2-d-opcode3に配置されているため)。
これは正しいです?よくわかりません-Z80のマニュアルでは、CPDR(2バイト命令)が2回インクリメントすると記載されているため、これについては少し不明確ですが、「メモリリフレッシュレジスタ」セクションでは、各命令フェッチ後にインクリメントすると記載されています。J80(これについてはよくわからないのでチェックしたエミュレーター)は、命令の最初のオペコードバイトの後でのみインクリメントすることに気づきました。
どちらが正しい?いずれにせよそれほど重要ではないと思いますが、知っておくといいでしょう:-)ありがとうございます。
よろしく、フィルポッター
c# - 「Calli」という用語の意味論的推論または意味は何ですか?
グラフィック プログラミング サンプルなど、コードのさまざまな場所でこの用語を目にしました。C++ セマンティックのようですが、どうやらOpCodes.Calliに関連していると思われるEmitCalliという C#/.NET マネージ実装があります。これは機械語の命令だと思います。素人の用語にやや近いこの用語の説明はありますか?
c# - C# OpCodes を使用して、オブジェクトを返すメソッドを発行する
オブジェクトを返したいメソッドを持つ動的型を作成しています。これを達成する方法を理解できていません。これが私がこれまでに持っているものです:
私が msdn を正しく読んでいれば、スタックで myObjectIdLikeToReturn の参照を取得する必要があると思いますが、運がなかったのです。誰かが私を正しい方向に向けることができますか?
編集:より明確にするために。私はILで同等のものを書こうとしています:
c - Zilog Z80 OP コードの実装
私は現在、古き良きゲームボーイ用のエミュレーターを開発していますが、いくつかの基本的な操作コードを実装する方法を理解する上でいくつかの問題に直面しています。
現在、AND 演算を実装しています。最初のいくつか (0xA0 -> 0xA3; 0xA6 & 0xA7) は非常に単純ですが、レジスタ H、L の AND 演算は少し異なります。
z80 のドキュメントは、次のリンクからダウンロードできます: um0080.pdf (172 ページ)
ここに、私が何を意味するか (疑似コードを使用) と基本的に何をするかを示すいくつかの例を示します。
AND A,H (ビットシフトに注意)
AND A,L (ビットマスキングに注意)
私はすべてのビット操作を知っており、それらが何をするかを知っていますが、なぜそのようにする必要があるのか 理解できないようです. 私にはいくつかの理論があります (間違っていたら訂正してください :-)):
私がすでに理解していることは、レジスタ H と L は基本的に 16 ビット レジスタであるレジスタ HL であるということです。CPU/バスは 8 ビット操作しか処理できないため、分割する必要があります。または、より論理的な提案: 唯一のレジスタであるため、H と L の値はレジスタでマスクされ、単に互いに分離する必要があります (上位/下位ニブル?)。
背景知識(これらすべてが内部でどのように機能するか)を知りたいので、誰かがこれをより明確にしてくれれば、深く感謝します。
assembly - FS からの LODS (MASM)
LODS オペコードを使用して、FS から eax に 2 バイトをロードしたいと考えています。LODS で使用されるデフォルトのセグメントは DS です。それを FS でオーバーライドしたいと考えています。MASMオペコードを使用してこれを行うにはどうすればよいですか?
ここからのソースhttp://www.ragestorm.net/blogs/?p=369
どうもありがとう、マイケル・エングストラー
assembly - 非常に単純な ARM 命令をバイナリ/16 進数に変換する
このページと他のさまざまなガイドを使用して、非常に単純な ARM 命令をバイナリと 16 進数で表現する方法を見つけようとしました。私には簡単なプロセスのように思えますが、まだ理解できません。いくつかの例を次に示します。
基本 NOP:
他の人への同じ基本的な質問。
2 つのレジスタの比較:
即値をレジスタ値に追加:
オンラインのこれらのチュートリアルはすべて、このような命令の使用方法を説明するのに優れていますが、ARM 命令をバイナリ/16 進数/マシン コードに変換してアセンブルする方法を実際に説明しているものはありません。
よろしくお願いします。