Binary Hacksが11月11日のバイナリデーに発売 46
ストーリー by kazekiri
バイナリアンならば 部門より
バイナリアンならば 部門より
elfbin 曰く、
あのBinary 2.0カンファレンスから一年近く経過しようとしているが、Binary 2.0提唱者である高林哲氏のブログによれば、Binary 2.0カンファレンスにおいてオライリーとアイディアを交わした Binary Hacksの発売日が11月11日に決定したとのことだ。 わざわざ、1111というバイナリデーを選んだようである。 「内容的に類書があまりないユニークな1冊」と書かれているが、 この目次がそれを証明しているだろう。 高林氏の宣伝も読むとますます買いたくなる。 青森県七戸町の ハックリタイで次回イベントが開催という話もあったと思うが、 発売記念イベントをやってくれないだろうか。
萌える Binary Hacks (スコア:4, おもしろおかしい)
Re:萌える Binary Hacks (スコア:0)
GoogleGuy (スコア:3, 参考になる)
それだけでも豪華なイメージが。。
首藤氏はjavaな人、でしょうか。
これって、 (スコア:2, すばらしい洞察)
でも欲しい。
Re:これって、 (スコア:0)
どうせならツールがどのようなことをやってて、それを応用するとこういうことができますよ、というのがほしい。
Re:これって、 (スコア:2, 興味深い)
あるみたいですよ。
see. http://0xcc.net/blog/archives/000139.html [0xcc.net]
> それを応用するとこういうことができますよ、というのがほしい。
ここまであるかどうかは買ってみてのお楽しみ。
サンプル PDF 公開 (スコア:1)
とのこと。
> それを応用するとこういうことができますよ、というのがほしい。
確かに、それぞれのハックの解説をもう少し踏み込んで様々な応用シーンを見せて貰えると、余り理解していない読者にもその価値が実感できて良かったんじゃないかとも思ったのですが、その先へは読者が自ら踏み込んで行き、バイナリアンの世界に足を踏み入れて欲しいというメッセージな気がしました。
また、この本を読んで興味や好奇心を掻き立てられ、頼まれもしないのに色んな局面で使ってみたくなる、そんなタイプの人が対象読者なのかもしれません。
この時期にあんなところでイベントをすると (スコア:2, すばらしい洞察)
Re:この時期にあんなところでイベントをすると (スコア:0)
「発売記念イベント」ではないが (スコア:2, 興味深い)
実は関係者なのでAC
Re:「発売記念イベント」ではないが (スコア:0)
Re:「発売記念イベント」ではないが (スコア:0)
こんな大事なもの、もっと宣伝しろよ!!!!!
全然知らなかったぞ。
1111はバイナリデー? (スコア:2, 興味深い)
などと思ってしまった。
MIYAZAKI Yasushi
Re:1111はバイナリデー? (スコア:0)
# 自分がAで嫁がCなのでAC
このネタこそ (スコア:1, すばらしい洞察)
Re:このネタこそ (スコア:3, おもしろおかしい)
Re:このネタこそ (スコア:1)
コンパイラに勝つ方法 (スコア:1)
ちょっとバイナリから外れるけど(汗
Re:コンパイラに勝つ方法 (スコア:2, 興味深い)
まだキャッシュと言うものが無くてCPU内部クロックとメモリアクセス速度とが同じ時代はいろいろありましたがね。
アドレス演算はインクリメントよりデクリメントの方が速かったとか、
割り算より掛け算が早いから逆数掛けてシフトするとか、
1/4正弦テーブルで16bitSinCosを引いてくるとか、
PCレジスタ相対でアドレス求めるとクロックが1稼げるとか(1命令3クロックとか4クロックの時代)、
任意の範囲でループ無しのテーブルジャンプでメモリコピーとか(いまではキャッシュに収めてループの方が早い)
ハハハ
Re:コンパイラに勝つ方法 (スコア:1)
http://www.smallnews.net/azuco/column/amd64/hornet.htm
手前味噌ですけど、テーブルジャンプとか微妙な速度なんですよね・・・
プロセッサによっても特性が違いますし・・・・・
そういうのを踏まえて、達人ならなんか奇跡を見せてくれるんじゃないのかなとw
余計なもの覚悟・・・(Re:コンパイラに勝つ方法) (スコア:2, 興味深い)
タイマー代わりにして、ゲームの発射ボタンのトリガ判定に
していた、なんというのを読んだことがあります。
Apple IIについての書籍に書いてありました。書いたのは、
先日Apple Iを600万円と鑑定した柴田さんです。
以上、リンゴ屋の完全な横やりでした。失礼しました。
-- gonta --
"May Macintosh be with you"
Re:余計なもの覚悟・・・(Re:コンパイラに勝つ方法) (スコア:1, 興味深い)
今でも電気ポットみたいなのには使われているという話です。
この業界、自分や自分の知っている人が「発明した」ことにするのが好きですよね。試すことにコストのかからないソフト関係では、残念ながら大抵のことは既にやられていると思ったほうが良いとつくづく思います。
# ソースを示せないのでAC
Re:コンパイラに勝つ方法 (スコア:1, すばらしい洞察)
で、それを手動でtable jumpにしても改善するわけ無いじゃん。
>いわゆる旧世代の高速化技法というのはほぼ死滅したわけで、
じゃなくて、コンパイラがすべて取り込んだの。
(そして適切に使い分けてる)
>>割り算より掛け算が早いから逆数掛けてシフトするとか
こんなのも当然やってるよ。(シフトは不要だと思うが)
>>1/4正弦テーブルで16bitSinCosを引いてくるとか
これは頻度にもよるが、計算した方が早かったりする。
Re:コンパイラに勝つ方法 (スコア:1)
少々荒いながらも精度の見積もりしつつ高速低負荷演算ならこれかな?
Re:コンパイラに勝つ方法 (スコア:0)
C++ → アセンブラリスト → スーパースケーラ・キャッシュ等にあわせて最適化
ということを説明してある本はいくつかありましたね。
ちょっと前ならMMXとか3DNow!などでコンパイラと差をつけることはできましたが
今はそれすらコンパイラがやってくれるようになりましたからx86/x64系統では
人がコンパイルに勝つのはかなりの至難の技で、できたとしてもすぐに陳腐化
してしまう技術になってしまうかと・・・
Re:コンパイラに勝つ方法 (スコア:1)
>2. 割り算より掛け算が早いから逆数掛けてシフトするとか、
>3. 1/4正弦テーブルで16bitSinCosを引いてくるとか、
>4. PCレジスタ相対でアドレス求めるとクロックが1稼げるとか(1命令3クロックとか4クロックの時代)、
>5. 任意の範囲でループ無しのテーブルジャンプでメモリコピーとか(いまではキャッシュに収めてループの方が早い)
1,4 ---- そんなことはコンパイラが知っている
2,3,5 -- アセンブラに特化した手法ではなく高級言語で書けばよい
つーわけで「超絶アセンブラ」の例になってないと思う。
2は「シフト」とあるんで固定小数の話かな?
整数除算命令がない(ので関数呼び出しになる)とか極めて遅いCPUとかあるので、今でも有効。
浮動少数の場合、しかるべき最適化オプション(gccなら-ffast-math)をつけるとコンパイラがやる。
演算精度の問題で同値にならないことがあるので、標準では有効にならないけど。
Re:コンパイラに勝つ方法 (スコア:1)
文脈読んでくださいね~、だれも今の超絶アセンブラの例など書いてませんよと。
AZUCOさんが「そうです。いわゆる旧世代の高速化技法というのはほぼ死滅したわけで、」と書けるのは文脈読めてるからですよね。
ちなみにコンパイラを過信すると・・・ってのはよくある話です。
当時のコンパイラだって”コンパイラが知っている”ハズのことをやってないのは珍しくもないし今でも・・・。
>2は「シフト」とあるんで固定小数の話かな?
>整数除算命令がない(ので関数呼び出しになる)とか極めて遅いCPUとかあるので、今でも有効。
そうです、正解。
「CPU内部クロックとメモリアクセス速度とが同じ時代」と言うのは浮動小数点演算器はオプション装備で普通は無くても不思議ではなかった時代ですよと暗黙に示してもおります、メジャーCPUならi286とか68000が末期あたりかな?
Intelだとi386/i486で浮動小数点演算器有りのDXと無しのSXが並列で売られCPUのデフォルト標準装備になったなのはPentiumからだったかなと曖昧な記憶。
680x0系も"EC"が頭に付くと浮動小数点演算器無しバージョンになった68020/68030、これ以降は涙無くては語れない。
Re:コンパイラに勝つ方法 (スコア:0)
(正確にはUINT_MAX/3+1をかける)
Re:コンパイラに勝つ方法 (スコア:1)
これは、アーキテクチャに依存しない一般的なテクニック。
Re:コンパイラに勝つ方法 (スコア:0)
勝ちたいならグローバル最適化の能力をつけるのが吉?つまり、アルゴリズムだけど。
#未来の処理系はデータの使われ方から最適アルゴリズムを導出したりして・・・
Re:コンパイラに勝つ方法 (スコア:1)
すいません、profile guided optimization (PGO) という汎用的なテクニックなんですけど。
すでに商用コンパイラでも実装されています。
Re:コンパイラに勝つ方法 (スコア:1)
元ACの
> #未来の処理系はデータの使われ方から最適アルゴリズムを導出したりして・・・
で重要なのは「最適アルゴリズムを導出」ってところで、
バブルソートなソースから、処理するデータによって
クイックソートなコードを吐いたり
バケットソートなコードを吐いたり
してくれるようなコンパイラを想定しているのでは?
かつて (スコア:1, 興味深い)
objdump --disassemble に嘘付かれて泣きながら *-bugs にメールして objcopy -Oihex やら -Osrec やらで ROM に焼いてたのが十数年前。
自分の環境で動かす為に $EMACS/sysdep/ だったかその辺でシステム/マシン依存関係を学んで gcc は *.md をいじりたおして当たり前。
SunOS 用の商用アプリ体験版の ***** を *** して無期限にして使ってみたり(今は正規版ユーザ)。
敢えて言おう、この本は「入門書」であると! :-p
# 流石にアレなのでAC。しかしツール揃ってるいい時代だよなぁ。
バイナリデー (スコア:0, すばらしい洞察)
Re:バイナリデー (スコア:2, すばらしい洞察)
実践的 (スコア:0)
こういう本は無くて、問題が発生するたびに一つ一つ先輩から教わったものだけれど。
Cは書けるけれど、デバッガやコンパイラオプションが分からない、駆け出しから中堅プログラマに良さそうだ。
Re:実践的 (スコア:2, すばらしい洞察)
一部の項目にはそういうのもあるけど、これは真っ当な人間が手を出すタイプではない。
普通のプログラマなら、もっと素直にコンパイラやデバッガの本を買えばいい。
少し特殊なhackをする人とか、特殊な環境でプログラムをする人とか、少し人とは違った何か
ブラックマジック的な物に手を出す人向けでしょ。エミュ・バーチャルマシンを作る人とか、
デバッガっぽい物を作る人とか、システムに乗っとりをかけるような物とか。
Re:実践的 (スコア:0)
printf() 入れると最適化外れて再発しないような SEGV を追うときに、
デバッガでスタック情報見たりしません?
Re:実践的 (スコア:1, おもしろおかしい)
> デバッガでスタック情報見たりしません?
多分、問題ふたつがごっちゃになってるぞ。
デバッガでスタック情報をみるのは単に楽をする為だよ。
本当のスタックイメージは心に思い描かれるものなのさ。
# 今、いい事いったつもりになってます
Re:実践的 (スコア:1)
ハッカーはprintf()を使わないと。
Re:実践的 (スコア:0)
Re:実践的 (スコア:2, すばらしい洞察)
どうせなら (スコア:0)
どうせなら目次も16進で・・・
2進とは言わないから。w
Re:どうせなら (スコア:1, おもしろおかしい)
ΩΩΩ!<ナンダッテー
空目・・・ (スコア:0)