問題タブ [jump-table]

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.

0 投票する
1 に答える
743 参照

assembly - 小ジャンプオフセットテーブルの使い方

短いジャンプ オフセットを持つテーブルを使用しようとしています。

Objdump はff 22、ショート ジャンプではないものとしてエンコードされたジャンプを示します。

また、この質問で見たものに基づいて、jmp *r1(%edx)ラベル + オフセットにジャンプしようとしました: On x86 assembly jump tableですが、gdb は、メモリ内でまったく異なる場所に移動することを示しています。r1

別のアイデアは、この回答eipに示されているように、手動でオフセットを読み取って追加することです:

理想的には、コード ゴルフの利益のために、ソリューションはできるだけ短いものです。では、オフセットごとに 1 バイトのみを使用しながら、コードの近くのセクションへのジャンプ テーブルを指定するにはどうすればよいでしょうか?

0 投票する
2 に答える
549 参照

gcc - movsxd を生成する GCC ジャンプ テーブルの初期化コードと追加?

GCC で最適化して switch ステートメントをコンパイルすると、次のようなジャンプ テーブルが設定されます。

それを行うための最良の方法はMOVSXDADD

LEAで使うのと同じじゃない?displacement

ここで何が起こっているのか、おそらく私には理解できないと思います。RDXジャンプ台のスタートのようです。RDIswitch ステートメントへの入力引数です。しかし、なぜ 2 回追加するのRDXでしょうか。

これは、私がコンパイルしていたswitch文です-O3