ARM Thumb 命令セット gcc サポート ひとまずまとめ

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

Thumb Interwork と Super Interworking

これら 2 つの枠組みの性格としては,おそらく

Thumb Interwork
ARM モードと Thumb モードの切り替えは toolchain 任せ
Super Interworking
ARM モードと Thumb モードの切り替えを自分で管理する

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

根本的な問題

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

例えばデータ処理で

  • 前処理は呼び出し頻度が低いので Thumb 命令で
  • 本処理は頻度が高いので ARM 命令で

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

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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-11-21 (土) 09:31:08 (5282d)