1

グローバル関数または静的関数を作成したいのですが、関数のアドレスが最大 24 ビットであることを確認する必要があります。これを行う方法はありますか?

編集: arm アーキテクチャに arm-linux-gnueabi-gcc クロス コンパイラを使用しています。メイン プログラムはアーム モードで静的にリンクおよび変換されます。私が実際に望んでいるのは、printf シンボルを再配置することですが、&printf は 4B かかるため、命令 BL &printf は実行できません。だから、私は最大3Bを持つことができます。

4

3 に答える 3

1

はい、少なくとも組み込み C プログラミングで関数アドレスを手動で設定できます。このためには、オブジェクト (または関数) のアドレスを指定できるリンカー ファイルを編集する必要があります。「#pragma」と呼ばれるコンパイラ ディレクティブを使用して、コードでこのアドレスを使用します。

于 2013-06-20T10:33:24.940 に答える
0

関数を可能な限り低いアドレスにロードしたいだけです。ファイルの先頭で関数を定義し、それを「.o」ファイルにコンパイルしてみませんか。このファイルを最初のファイルとしてローダーに渡します。main() をシンプルで小さいものにします。

これは私の推測です。これにより、関数が可能な限り低いアドレスに配置される場合があります。

于 2013-06-21T04:54:18.593 に答える