* ARM Thumb 命令セット gcc サポート ひとまずまとめ [#qdac79e8]

いろいろつついてみて,わかったことをひとまずまとめてみる.

** Thumb Interwork と Super Interwork [#g4695c0e]
** Thumb Interwork と Super Interworking [#g4695c0e]

これら 2 つの枠組みの性格としては,おそらく
:Thumb Interwork|ARM モードと Thumb モードの切り替えは toolchain 任せ
:Super Interwork|ARM モードと Thumb モードの切り替えを自分で管理する
:Super Interworking|ARM モードと Thumb モードの切り替えを自分で管理する

というようなところなのだろう.

** 根本的な問題 [#gdab6902]

Thumb Interwork, Super Interwork に共通する問題として C プログラムの場合,ARM モードと Thumb モードの指定はファイル単位でしか行えない,という制限がある.
Thumb Interwork, Super Interworking に共通する問題として C プログラムの場合,ARM モードと Thumb モードの指定はファイル単位でしか行えない,という制限がある.

例えばデータ処理で
- 前処理は呼び出し頻度が低いので Thumb 命令で
- 本処理は頻度が高いので ARM 命令で

コンパイルしたい,なんてことは十分有り得るだろう.
で,このようなプログラムの場合,(規模にもよるが)前処理と本処理は1つのソースファイルにまとめるのが普通である.
が,gcc の縛りにより,1 つのソースファイル中で任意に ARM モード・Thumb モードの切り替えはできない.

フルスクラッチでプログラムを起こす場合は「しょうがないから ARM モードの部分と Thumb モードの部分でソースを分けよう」なんてこともできるが,既存のプログラムを移植するような場合は…ちょっと考えたくない.
ソースファイル内で例えば #pragma ARM とかのコンパイラ指令でモードを行き来できたりすると,移植はしやすいんだけどなぁ.

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS