タグ

ブックマーク / alohakun.blog7.fc2.com (39)

  • ホワット・ア・ワンダフル・ワールド GNU C 拡張を使って関数のコールグラフをプロファイルする

    今スゲー酔っ払ってるので,メモだけ.指がうまく動かなくてタッチタイプがミスる.てか,うちのマウス,ゴミがつまりすぎだよなぁ.さっぱり回らない. きっかけは,rayfill さんのコメント. コールグラフ 呼び出しに関する情報ならコンパイル時に-pgつけてプロファイラまわせばでませんでしたっけ? x86環境でlinuxとかならValgrindのプラグインのCallgrindでdotファイル & Graphviz経由だったかでコールグラフが書けたと思います。 gcc拡張使ったこういう手(http://www-06.ibm.com/jp/developerworks/linux/050722/j_l-graphvis.shtml)もあるようです。 finstrument-functions オプションの説明とかは,件の ibmdeveloperworks か,BINARY HACKS の 「HA

  • ホワット・ア・ワンダフル・ワールド strict aliasing rule

    来週からは後期スタートだというのに,生活ペースはメチャクチャ.昨日は 17 時に起きてしまい,今日は 22 時半ごろに起きてしまった今日この頃,皆様いかがお過ごしでしたでしょうか ? まぁ,順調に 6 時間ずつズレているので,明日には元に戻るかなと. しっかし,なんで夜型の方には一瞬で 6 時間とか 12 時間とか平気でズレるのに,朝方の方には意識しないと絶対にズレないんでしょうかね ? まぁ,朝の 3 時とかにバリバリ活動しているってのは,ある意味朝型と言えなくもないような (ことはない). 僕は夜はあんまり生産的な方面にやる気が出ない人なので,夜型になると研究がさっぱり進まないと言う.いろいろ危機です. あと,Debian にテキトーなパッケージをいっぱい突っ込んでいたら,何故か日語の TTF (フォント) が表示されなくなってしまいました.そんなこんなで今はビットマップな生活なんで

    kohagi
    kohagi 2010/01/12
  • ホワット・ア・ワンダフル・ワールド 人は死ぬから生きられる

    人は死ぬから生きられる―脳科学者と禅僧の問答 タイトルがいかにも新書臭いですし,禅僧の話は面白そうなんだけど茂木健一郎が余計だな… とか思う人 (というか自分) もいるかもしれませんが,面白かったです. 茂木さんは言わずと知れた,科学者なのにうさんくさいクオリアとかよくわかんないことをいつも言ってる人で,「プラズマ」 の大槻教授みたいなポジションでテレビに出て専門外のことについても適当なことばかり話している何やってるかよくわからない人というイメージがあるかと思いますが (笑) III 章の後半あたりに,その辺の考えや自身の立ち位置について書いてありました. 茂木 よくわからない存在ほど,心地よいものはないですよ.生きていることの実感を一番強度のある形で引き受けるには,分類不能な何ものかわからないものになるのが必要じゃないですか.(p.155) 南さんも南さんで,禅僧なのに 「言語化」 や社

    kohagi
    kohagi 2009/06/07
  • ホワット・ア・ワンダフル・ワールド それはデバッガ関係無いですよね

    ちょっと気になっただけですが. でも、設計もせずに行き当たりばったりに手を動かして、ちゃんとしたものができるとは思わないし、結局デバッグではまる原因になる。yuguiさんが講演で言ってたことも結局そういうことじゃないかと解釈したし、Linusが長い間カーネルデバッガの導入に反対だった(2.6.26でkgdbがマージされた)のも同じ理由からだろう。 (Plan9 日記 2009-04-25 ■[イベント] Debug hacks conference 2009) 別に oraccha さんに何か物申したいわけではないのですが,この手のデバッグの話になると,なぜか 「デバッガを使うよりも ○○ (コードの書き方とか,設計とか,開発プロセスとか,テストとか,何でもいいのだけど) の方が大事だ.」 という論調の人が沸いてくるのはなんでなんだろうな,と思います.単なる論理のすり替えなんじゃないかな…

    kohagi
    kohagi 2009/04/26
  • ホワット・ア・ワンダフル・ワールド Linux の移植方法まとめ

    前回のエントリで書いたように、今まで自分で実装した独自の ARM システムシミュレータに Linux を移植していたわけですが、シリアルドライバ (8250 コンパチ) と NIC ドライバ (smc91x) が動き、rootfile system on NFS が可能になって、ようやく一段落しました。 全くの素人が 2 週間ぐらいでできたので、(優秀なデバッガさえあれば) 世間一般で思われているほど難しく無いんだな~ というのが感想です (もちろん途中途中ではかなり悩みましたけど… しょーもないミスや誤解も無数にしました)。 難しいデバイスを動かそうと思ったらメチャクチャ大変なのだろうと思いますけど、今回は、全部自分で書いた仮想デバイスの上に移植したわけですから、動かし方などは完璧にわかりますし、いざとなったらハードウェアを printf デバッグして、ちゃんと I/O レジスタが叩けて

    kohagi
    kohagi 2009/04/19
  • ホワット・ア・ワンダフル・ワールド Linux のポーティング

    最近はずっとハードウェアシミュレータを開発していて (GCC x86/sh のバックエンドを hack したりもしてましたが),仮想 CPU エミュレータ (PARTNER デバッガと直結)/割り込みコントローラ (PIC)/シリアルコントローラ/ネットワークインタフェースカード (NIC) と一通り実装して,テストプログラムをそれぞれ書きました (NIC は ping サーバ,要するに ARP と ICMP に応答するプログラムを書いた). そしたら社長が 「そんだけあれば Linux 動くやん.ほなら移植してみましょか.若槻さんのお勉強もかねて.良い経験になるで」 という展開に. Linux とか全く開発したこと無いし,ましてや ARM のアーキテクチャ依存部なんて,いくら Linuxは多いとはいえ資料全然無いし,ほんまにできるんかなと,ここ数日はけっこう暗中模索で大変でした.社

    kohagi
    kohagi 2009/04/09
  • ホワット・ア・ワンダフル・ワールド KMC ウェブリニューアル会議

    弊社のウェブサイトがいろいろ古いので,改善点について議論するための会議が昨日開かれました. 始まる前は,弊社は 40 代 50 代の開発者が中心という,平均年齢が高い会社ですので,実効的な議論ができるかどうか正直疑問だったところもあったのですが,蓋を開けてみれば非常に活発なやりとりがなされ,あっという間に 2 時間が経過しました.大成功だったのではないかと思います. 特に印象的だったのは,40 台中盤と定年間近の営業部の方々が,積極的に議論に参加されていた様子でした. RSS などのキーワードや,使いやすいサイト・見づらいサイトなどのウェブに関する感覚が (僕もそんなに詳しくないし,それほど最先端を行っている若者でもないのですが) 普通に通じる.偏見かもしれませんが,このことだけでも非常に驚きでしたし,日ごろから当に真剣にアンテナを敏感に張っておられるのだなと,改めて信頼感が強まりました

    kohagi
    kohagi 2009/03/04
  • ホワット・ア・ワンダフル・ワールド メタサーキュラープログラミング

    入社して最初の一ヶ月は,実機ハードウェアの上で動くプログラムを書くために四苦八苦してきた.ひたすらマニュアルと格闘しながら,組み込みプログラミングってのはこういうことなのかと,いろいろな発見があった. 次の一ヶ月は,自分が書いたプログラムを動かすための仮想ハードウェア (プログラム) を作るために四苦八苦した.最初の一ヶ月で学んだ知識が有機的に結びついてくる思いがして,これもまたいろいろな発見があって非常に面白かった. まだまだ修行中.これからは,いろいろな仮想デバイスを作りつつ,自分で書いた仮想ハードウェアの上に,Linux とかをポーティングして動かしてみたいと思っている.FPGA とかで実際にハードウェアを作るのも,達成感があって面白いのだろうけど,全てがソフトウェアの世界というのもまた,独特の趣があって面白いものだと思う. 実機ハードウェアに JTAG デバッガをつなげて,実機の

  • ホワット・ア・ワンダフル・ワールド 二ヶ月経過

    久しぶりの更新です.なんか文章の書き方を忘れてしまったなぁ… 今のところ,想像以上に楽しくやらさしてもらってます.仕事が楽しすぎて,その他の活動が全て停滞しています (苦笑) # 仕事で思いっきり書きたいコードが書けるので,帰ってきたらコード書く気にはあまりならないという.twitter したりしてぐだぐだしてるだけ w 休みの日も会社に行くし,というか,今から行くし.大学の研究室の時と,やってること全く同じ. 先輩社員の方々を見ていても,みんな業務内容,会社形態,給与水準,全てにおいて (これは良し悪しがあると思いますが) 特に不満なさそうなので,将来的にも特に問題は無いのではないかと思います. 最初の一ヶ月ぐらいは,組み込みのいろはを勉強させてもらっていたわけですが,最近はようやく仕事のコードを書き始めました.これが順調に育っていけば,けっこう大きなビジネスにつながりそうで,非常にワク

    kohagi
    kohagi 2009/01/31
  • ホワット・ア・ワンダフル・ワールド 徹底討論 朝まで生 KMC 会議

    KMC では月に一回,東京オフィスを含めた全体会議 (通称 KMC 会議) を京都社で行うのですが,最近人が増えてきたため (ここ2年間で5~6人ぐらい増えたらしい.現在 (パートや経理の人などを除いて) 16人ぐらいなので,比率的にはかなり急激な増加),今一度全体の意思統一を計るために,昨日は時間無制限の徹底討論会が行われました. 13:30 から,定例通りのいろいろな情報共有会議が 17:00 ぐらいまで行われ,それからディスカッションに. 未来を考えるためには,まずは過去を振り返らないといけないということで,KMC の成り立ちから現在までの歴史を年表で振り返りつつ,社長がひたすら当時の思い出を話しまくりました.非常にドラマチックで面白かったです. 「一時間半もよーしゃべりはったなー」 「いやいや,こんでもかなり短縮してんやで.こんなんなんぼでも話せるし,細かいところまで説明したら

  • ホワット・ア・ワンダフル・ワールド gcc 独自拡張メモ

    ていうかね,GCC とか Kernel とかを深追いすると,簡単に人生を棒に振ることができそうで怖い. まぁ,それは良いとして. GCC の独自拡張に関しては,今までほとんど興味を持ってなかった (GCC の最適化をあんまり信用していない.ICC はバケモノという神話を信じているので.使ってないけど) んだけど,最近 GCC 独自拡張がアツい気がする (主に僕の中で) J - ■[gcc] builtin_expect おー,そんな拡張機能が・・・ GCC 便利過ぎる. あと、__builtin_expectは、PowerPCみたいな条件分岐に命令に直接分岐ヒント付けられるCPUじゃないとあんまり効果が無いような気がしたんですが、そこらへんは、誰か偉い人が。 PowerPC はそんなことができるのか・・・ SUGEE. ちょっとヤバいと思ったのが,typeof 拡張機能.いくら何でも,アレ

  • ホワット・ア・ワンダフル・ワールド C++ 言語のカラクリ

    Cfront の歴史資料として購入したのですが,ちょっと酷いですね.これが 1200 円だったら,まぁ,ギリギリ許容範囲かもしれませんが,2000 円の価値は無いでしょうね. C++言語のカラクリ 誕生の秘密と舞台裏 前半の方は,けっこう勉強になりますし,面白いところもあります.リンク後のパッチで静的グローバルなオブジェクトのコンストラクタ/デストラクタを実現していたとか,へーと思いました. しかし,文章がわかりくい.冗長すぎて,下手な翻訳なのかと思うレベル. また,記述が曖昧で,正確性や資料的価値はありません.「確か~がそんなやり方」 「おそらく~ だったか~だったと思うんですけど」 とか,万事そんな感じの記述で,少なくとも技術文章や論文ではありません.エッセイというか,居酒屋でのヨタ話のレベル.を書くんでしたら,最低限調べればわかることは調べるか,資料へのポインタを示して欲しいな

  • ホワット・ア・ワンダフル・ワールド JavaScript とか CSS とかについてバイナリアンの立場から一言言っておくか

    とかいうはてぶとかにありがちなタイトル付けはキモイよなぁ… どうでもいいけど. # そもそも僕はバイナリアンじゃないです. まぁ,いまさら言うまでも無いけど,全ての具象プログラミング言語で書かれた具象プログラムは,機械語と考えることもできるんだよね. 例えば JavaScript なんかは,ブラウザという仮想機械の抽象機械語なわけだ.機械語なんだから,IE とか Opera とか Firefox とか,ブラウザごとに挙動や命令 (API) セット全然違っても,それは別に問題じゃない. もっと上位レベルの記述からのコンパイラがあれば良いだけだよね.んで,(よく知らないけど) MacOS のユニバーサルバイナリみたいに,どのブラウザでも同じように動くコードが生成されれば良い,と. 逆に,全てのブラウザの JS の仕様を揃えようってのは,全ての OS や CPU のシステムコールや命令セットを揃

  • ホワット・ア・ワンダフル・ワールド ぼくが KμC に決めた理由

    Author:あろは (alohakun) デバッガ開発者見習い(予定) 連絡先 : alohakun ___at___ gmail.com mixi : http://mixi.jp/show_friend.pl?id=182927 twitter : http://twitter.com/alohakun このページはインラインフレームを使用しています ※ 当然のことながら,僕は大企業で働いた経験が無いので以下は全て想像です はてなブックマークのコメントで,マイクロソフトなどの選択肢(他の,名の知れた優良大企業という意味だと思う) は無かったのだろうか ?というようなコメントをいただいた. まぁ,もちろん,自分が MicroSoft 社とか google 社のような大企業(?)に入ろうとしても入れないだろう (し,受ける気もない) という現実はあるのだけど. 大学院の研究室の同期は,

    kohagi
    kohagi 2008/10/07
  • ホワット・ア・ワンダフル・ワールド いろいろあって,就職することになりました

    2008 年 11月 21 日付けで,京都マイクロコンピュータ株式会社に入社することになりました. 「デバッガは神の手 (社長談)」 ということで,ハードウェアとソフトウェアの全てを掌握し支配するデバッガ技術を基幹として,ソフトウェア開発の世界を改革していけたら良いなと思っています. 社長の名言集 (ちなみに KμC は,社長が一番コードを書いてるという変な会社です) 「パートナー ※ が無い環境ではもうプログラミングできへんわ.逆に言うと,パートナーさえあれば,OS はなんでもかまへん.emacs 使う人が,emacs の中で全部やるのと同じやな」 (※ KμC が販売しているデバッガ.一番 KμC のデバッガを使っているのは,KμC の社員です) 「優れたデバッガがあれば,コードの書き方が変わる.うちの会社のコードはかなり独特で,普通のプログラマは追えないしわけわからんと思う.だけど,

    kohagi
    kohagi 2008/10/01
  • ホワット・ア・ワンダフル・ワールド call とか ret は無くてもなんとかなる

    Linux Kernel の include/asm-i386/system.h の switch_to() マクロとかで使われていたりして,わりと有名なテクニックなのかもしれませんが, call foo とかは,機械的に pushl $1f jmp foo 1: みたいに,スタックの頭に戻り番地をプッシュして,関数にジャンプする感じに書き換えられるのではないかと思いました. ret もまぁ, pop %ecx jmp *%ecx みたいに,適当に壊しても良いレジスタに戻り値を pop して間接ジャンプすれば大丈夫な気がします. もちろん,来一命令で済むものを,わざわざメモリ触った挙句命令数増やすのはバカバカしいので,実用性は無いわけですが. アセンブラとか,x86 命令レベルのクロック数とか μOP (マイクロオペレーション) レベルの話とか全然わからない子なので,大きな勘違いをしてい

    kohagi
    kohagi 2008/08/30
  • ホワット・ア・ワンダフル・ワールド GCC Hacks セミナー資料

    Author:あろは (alohakun) WAKATSUKI toshihiro デバッガ開発者見習い(予定) 連絡先 : alohakun ___at___ gmail.com mixi : http://mixi.jp/show_friend.pl?id=182927 twitter : http://twitter.com/alohakun このページはインラインフレームを使用しています

    kohagi
    kohagi 2008/06/30
  • ホワット・ア・ワンダフル・ワールド gcc のビルド環境を QEMU 上に作る

    私は gcc のサンプルフロントエンドを公開したりなどしているわけですが,やはり gcc を一からビルドするのは面倒だしハードルが高い (素直にコンパイルが通る保障も無い) というわけで,QEMU イメージで,気軽に試せるお試し環境を作れば良いと考えました.VMWare でも良いんですが,無料とはいえシリアルキーとかを入手するのは面倒ですし,OSC などで CD に焼いて配布する際などには,やはり自由なソフトウェアの方が楽だと思います (kqemu もあるし,X とか入れないので,どのみちそんなに速度は問題にならないと思う.サイズを減らすために qcow2 形式にしてるので,ディスク IO が非常に遅くなりますが…) つまり,一回ビルドを通した後の環境をそのまま配ることができれば,気軽にサンプルフロントエンドを改良したりして遊べるはず. 最初,Debian GNU/Linux を試したので

    kohagi
    kohagi 2008/04/20
  • ホワット・ア・ワンダフル・ワールド C の構文の変態さ

    そもそも C に文字列型なんてありません.文字列みたいなアレは,文字の配列型です. ポインタと配列型は,全く違うものです.そもそも typeof (GCC 拡張) で取れる型が違う,sizeof で取れるオブジェクトサイズも違う. まぁ,文字列リテラルが存在していて,唯一複合型なのに静的 (static) 領域に初期化して置いとくことができたりして,いろいろややこしいのですが. あと,配列の要素アクセスは,常にポインタ演算経由で行われるのも,ややこしいところですね.配列とポインタを同一視してしまうというもっともありがちな混乱は,ここに由来するのだと思います.アセンブリ言語のレベルでは,配列なんていう高級な概念は存在しなくて,メモリと番地しかありません.ポインタは番地を入れる変数 (メモリやレジスタ) そんなこんなで,もともとアセンブリに由来する C は同じことを表現する方法が非常にたくさん

    kohagi
    kohagi 2008/04/05
  • ホワット・ア・ワンダフル・ワールド 配列とポインタ変数には何の関係も無いよ

    C/C++のポインタの機能--配列との関係 Q. ポインタって危ないんじゃないの? A. なんで?危なくないよ. Q. だって合法なの? A. もちろん合法だよ. Q. こんな風にポインタを使うと違法ですよっていうものはある? A. それはちゃんと勉強すると分かるよ. Q. 配列ってポインタなんでしょ ? A. 違うよ.全然違うよ. Q. でも,ポインタなんでしょ? A. 全然違うよ.全く関係ないよ. Q. へー,じゃあ,配列とポインタの違いは何なの? A. じゃあ,簡単に説明してあげるよ.まず,配列はメモリの塊です. 直接レジスタに載せて操作できないから,ポインタ経由で扱う. C の構文上では,操作されるもの自体と操作するための機能の区別が曖昧だから,これらは気まぐれに同じような場所に現れたり,お互いを入れ替えても同じように動いちゃったりするんだ. なのでポインタと配列は同じもの,という

    kohagi
    kohagi 2008/04/04