2014年9月15日 (月曜日)

20:38:07 # Life ARM の Unified Assembler Language. clangでarm版Chromeのコンパイルするときにインラインアセンブ ラのコンパイルが通らないという話題があった。 gcc と clang では使えるインラインアセンブラの文法が若干違って、 しかもgcc側のドキュメントは比較的親切なんだけど clang 側には 何が使えるのかドキュメントが存在していない気がする。clang 3.1くらいまではgas 経由でコンパイルするモードというのがデフォ ルトだったと思うんだけど、3.2 からインラインアッセンブリをビッ トコードにとりあえず変換してそれ経由で使えるようにしてくれる (?)という--integrated-asモードというのがデフォルトになったっ ぽい。 ARMの命令は32bit即値を扱えないのにPC相対の定数プールに突っ込 んであたかも即値が扱えるかのようにするLDRメタ命令などの癖のあ る命令もあって、それらがclang の integrated-asで使えないなぁ というところで今日は困っていたんだけど。 過去の経緯によりいろいろな文法がたくさん追加されており、複雑怪奇になりすぎているので 最近ARMが作ったUAL という規格があって、GASとLLVMとその他のアセンブラの文法を そこに統一しようとしているらしい。 RVCT2.1 以降でのアセンブリ一覧のドキュメントが変更のドキュメントっぽい。

Junichi Uekawa

$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $