問題タブ [mspgcc]

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 に答える
174 参照

assembly - GCC が動的ジャンプ/関数呼び出しを使用できないようにする

セキュリティ フレームワークの一部として、GCC でコンパイルされたアプリケーション用のアセンブリ インストルメンター モジュールを作成しようとしています。モジュールのパフォーマンスを向上させるには、動的ジャンプ/動的関数呼び出しを可能な限り減らす必要があります。これらは、基本的に、何らかの動的ポインター (レジスターなど) を使用して、ジャンプを実行したり、関数を呼び出したりします。

現在の GCC コンパイラは、同じ関数 (コード内の特定のラベル) への複数の呼び出しがある場合は常に、ラベルをレジスタにロードし、関数を呼び出す必要があるたびにそのレジスタにジャンプします。もちろん、これは毎回同じラベルにジャンプするよりもはるかに高速なアプローチ (コードが小さく、クロック サイクルが少ない) ですが、前述したように、私のフレームワークでは非効率的です。私が避けたいことの例を示すために、コードスニペットを次に示します。

GCCに次のことをさせたいのですが:

MSP430 ファミリーのマイクロコントローラー用の GCC コンパイラーである mspgcc を実際に使用していることに注意してください。

(GCC コンパイラーの書き直し以外に) できることはあると思いますか? ご助力ありがとうございます