パスワードを忘れた? アカウント作成
34241 journal

okkyの日記: gccの asm文の書き方(備忘録) 3

日記 by okky

gccには inline アセンブラシンタックスとして asm() あるいは __asm__() 文というのが用意されている。
されているのはいいのだが、これがものすごく資料が見つけにくい。一つにはプロセッサ依存な部分があったりするからだが、他には

  1. Cの文法との相互作用が明確ではない
  2. ラベルへのアドレス記述方法がよく判らない
  3. 同一関数への複数の名前のつけ方が判らない

なども理由になっている。

ちなみに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

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by parsley (5772) on 2008年09月04日 20時34分 (#1415633) 日記
    #pragma asmばっかりしか考えていなかったもので流儀がたくさんありすぎて覚える気にもなれない
    --
    Copyright (c) 2001-2014 Parsley, All rights reserved.
    • by okky (2487) on 2008年09月08日 2時10分 (#1417037) ホームページ 日記
      そんな事を言っていてはgccの悪夢にはついていけませぬ。

      なにしろ人が書いたアセンブリコードを「勝手に最適化する」んですから。
      # 「あぁ、これいらないよね」とか言って、コードが消える。
      # それも「全消え」じゃなく「部分消え」までしてくる。
      ## あー、うん。いらない… orz
      --
      fjの教祖様
      親コメント
  • by Anonymous Coward on 2008年09月04日 15時34分 (#1415437)
    参考になるか分かりませんが、3年ほど前にいじった時に参考にしたページおいておきますね。
    http://www.mars.sannet.ne.jp/sci10/on_gcc_asm.html

    # しかしまぁ・・・使わなくなるとさっぱり分からなくなるorz
typodupeerror

ハッカーとクラッカーの違い。大してないと思います -- あるアレゲ

読み込み中...