okkyの日記: gccの asm文の書き方(備忘録) 3
日記 by
okky
gccには inline アセンブラシンタックスとして asm() あるいは __asm__() 文というのが用意されている。
されているのはいいのだが、これがものすごく資料が見つけにくい。一つにはプロセッサ依存な部分があったりするからだが、他には
- Cの文法との相互作用が明確ではない
- ラベルへのアドレス記述方法がよく判らない
- 同一関数への複数の名前のつけ方が判らない
なども理由になっている。
ちなみに3の「同一関数への複数の名前のつけ方」は、多分 memmove(3) と memcpy(3) のコードが欲しい記述方式になっているはずなのだが…面倒で調べていない。多分、どちらか(あるいは両方)がラベルで、ラベルを関数名扱いできるのだろう。だから「関数へのポインタ」の形でラベルを参照することもできるはずだ。また、ラベルの自動生成方法もあるはずなのだが…。
.
今しがた、いくつか「これは?!」というサイトを見つけたので、ここに記録しておくことにする。
http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
http://caspar.hazymoon.jp/OpenBSD/annex/gcc_inline_asm.html
拡張 asm 文の基本文法がわかりやすく書いてある。
http://csx.jp/~marunomaruno/gcc-inline-asm01.html?c=appendix
うぅっ (スコア:1)
Copyright (c) 2001-2014 Parsley, All rights reserved.
Re:うぅっ (スコア:1)
なにしろ人が書いたアセンブリコードを「勝手に最適化する」んですから。
# 「あぁ、これいらないよね」とか言って、コードが消える。
# それも「全消え」じゃなく「部分消え」までしてくる。
## あー、うん。いらない… orz
fjの教祖様
リンク (スコア:0)
http://www.mars.sannet.ne.jp/sci10/on_gcc_asm.html
# しかしまぁ・・・使わなくなるとさっぱり分からなくなるorz