binary 2.0 カンファレンス参加

binary people


縁あってカンファレンスを見に行くことができました。印象に残ったキーワード等を並べてみます。

高林さん

Binary 2.0 時代の到来

  • 冒頭から会場中が笑いの渦。プレゼンが(やっぱり)すごく面白い。
  • 「2.0がついていればなんでもよかった」
  • 「signalを深追い、佳境」
  • 「CNETで特集される日も近い」
  • binary hacks?
  • "ハックリタイ"は青森の地名*1

ひげぽんさん

プログラムはなぜ Mona OS で動くか?fork?何それ?

  • MONAカーネルC++、ブート部分だけなぜかC#
  • 会場のMona認知率はほぼ100%!! メジャーOS。
  • 動画が再生できる
  • Monaは5万行
  • ノーガードOS? ご本人談。
  • H/Wの割り込みもメッセージ化してユーザ空間で処理!!
  • Binary 2.0リングに参加してね

浜地さん

Dynamic Programming Language C -- 私は誰?

  • 「ダサいコードの例」で爆笑
  • 凄いプレゼンテーションツールにまた笑
    • 背景が3Dアニメ
    • スライド右上にfps
    • Zinniaさん作の SDL Presentation System (SPS)というのを使っているそうです
  • キーワード
    • dlinfo(3)
    • 0x41000000
    • dl_iterate_phdr()
    • cp_demangle()
    • libbfdでnm相当の処理
  • シグネチャが不明な関数を呼ぶには
    • GCJが使ってるlibffi
    • GNUStepが使ってる ffcall

青笹さん

G-Inspector -- GTK+ ランタイムインスペクション

  • G-Inspectorのお話
  • Gtk+はメジャーな言語を一通りサポートしている
  • 何気にautotools系のお話が役に立った。いろいろファイルをコピーしとかないといけないのがめんどくさいなと思っていたのだけど、いまどきは次の3つだけでいいそうで。
    • configure.ac
    • Makefile.am
    • <package name>.pc

中村さん

g++と例外キャッチボール - 中村孝史

  • 個人的に一番楽しみにしていたセッション。期待通り 最高 でした。
  • 「キャッチボールはできません(=投げ返すのは無理よ)」でまず会場笑。掴みはオッケー
  • 「努力すれば目でname mangling & その逆ができるようになります(実演付き)」でまた爆笑
  • 「DWARF2はプログラム言語」
  • gccで一番よく使うオプションは-S」 ⇒爆笑、でもおいらもそうかもしれないな
  • 例外処理方式にはSjLjとDwarf2があるが、前者はつまらんので今回は後者を説明
  • unwindは『超リターン』
  • C++のtype_infoクラス(特にその中のdo_catch()関数)を使ってcatchできるか判定
  • キーワードいくつか
    • eh_frame
    • gcc_except_table
    • __cxa_allocate_exception
    • __cxa_throw
    • CIE, FDE, LSDA ...
  • LSDA
    • 捕まえる範囲
    • 捕まえる型
    • ハンドラのアドレス
  • 質疑応答 (by 私。答えにくい質問をしちゃってごめんなさい・・・)
    • [Q] Linux+gcc4で、シグナルハンドラからthrowしたらプロセスがabortしたんですが、そういうものでしょうか?最近出たまともそうな本にもそういう例があり*2まして…。
    • [A] Dwarf2だと無理そう。その本の作者は、CygwinなどのSjLj環境を使っているのでは?
  • 休憩時間に教えてもらったこと
    1. C++関数からC関数を呼んで、そこからC++関数を呼び返して、それが例外を投げるというパターンでも、(Dwarf2だと)abortするよ
    2. Dwarf2の仕様は、一応ドキュメント化されているけど全部は読んでいない。gccunwind_eh2()ソースコードgcc/unwind-dw2*.[ch]を読めばわかるから。

首藤さん

実行時自己書き換え佳境

  • Core Wars (1985)
  • x86でPCを取得するには? ⇒ "call 次命令" して次命令のpoplでPCをスタックからpopすればいい
  • shuJITでは、「一度だけ実行すればよい処理を二度目以降はスキップするために自己書き換えを使った
  • もうひとつ、初回だけINT3でシグナルを受けて、ハンドラ内で初回だけの処理をするというのもやった。INT3だと、0xCCと一バイトの命令になるので、書き換えのatomicityを気にしなくて良く、楽。
  • アトミックな書き換え
    • XCHGとか
    • バスをロックとか
    • ...
    • でも、4〜8バイトくらいが限界
  • 他のスレッドを停止する方法もあるが、「罠にかける」方法もあるよ
    • 他スレッドがそのうち実行する場所に EB FE をアトミックに書き込んでしまえばいい
    • すると、無限ループに陥る

八重樫さん

ハードコアバイナリアンへの道

  • 「本日は大変レベルの低い皆さんにお集まりいただき」⇒爆笑
  • 「ハードを知らずしてバイナリを語ることなかれ」
  • 「下には下がいる!」
  • 「ハードコアバイナリアン
  • 「IEEE754 浮動小数点フォーマットを素で触る喜び」
  • 自作ハードでのプレゼンテーション
    • 世界初 "GDBプレゼン"
    • 自作のボードにプロジェクタを接続、ボードとPCをRS232Cで接続
    • OpenOfficeで作成したプレゼンを画像に変換、その場でgdbで1枚づつボードに転送!!
    • ゆーっくりページがめくられるんですよ :-)
  • 640x480x8色(デジタル)
  • OpenCores.orgのPlasma 25MHz, MIPS-I互換
  • お勧めハード
    • XILINX Spartan-3 Starter Kit (XC3S/500) $99
    • 2006/01のInterface誌に注目。ハイエンドなCQ出版の学習キットの説明が載る。
    • 「プログラミングだから、この会場の皆さんならできますよ(たぶん)」
  • お勧めツール
    • ISE Webpack
    • ModelSIM XE

*1:栗平 らしいです

*2:常に投げちゃいけないわけじゃないけど。C++規格 (ISO/IEC 14882:2003 18.7/5) によれば、投げていいかは処理系定義