たまに書きます。

気になって調べたことを書いていきます。まずはAboutページをご覧ください。

C/C++

大昔のgccのプリプロセッサに関する、極めてどうでもよい話

先日、酒を飲みながらgccだかなんだかのコンパイラの話をしていたときに、ふと、「そういえば昔のgccはプリプロセッサが#pragmaディレクティブを見つけると、コンパイルを中止してゲームを起動するとかいうのがあったよな」と思い出した。 この元ネタは、も…

Boostのremove_referenceについて調べた

アルバイトしてて最近はコードを読むたびに、使用されている(僕がこれまで見たことのない)Boostライブラリをつかった部分で引っかかることが多い。 これらをいちいち調べて簡単に自分で実験して・・・というのを繰り返しているので非常に時間がかかってい…

ブレークポイントの埋め込みについて

「デバッガの理論と実装」というすばらしい(らしい)本があって、絶版だし僕は持っていないから読んだことはないのだけど、デバッガの作りかたって結構興味がある。他のプロセスのメモリをいじったりすることは、普通にプログラミングしている分にはそうい…

スマートポインタみたいなのをCでやってみる

かなり昔にBinary Hacksで読んだのだけど、久々に自分のgistを見返してみてそんなのあったなぁと思ったので、備忘録として書いておく。 常に、自分の引き出しと言うか武器は、適切と思ったらすぐに持ち出せる状況にしておきたいので。というわけで、gccのcle…

Hello Worldが書けない

別に何の意味も無い記事。 C言語のHello Worldがどうも動いてくれないのでとりあえず載っけてみる。問題のコード及びその逆アセンブルは以下。これを動かすとbus errorとかsegmentation faultになって実行されずに終わります。考察は今度するとして結論: 最…

Macで固定アドレスにプログラムをロードする

最近のトレンド?でもあるみたいですが、Macもそれに漏れず、OS X 10.5以降はプログラムのロード時に、「アドレス空間のランダム化(Address Space Layout Randomizationといいます。頭文字をとって以下はASLRと表記)」処理が行われています。 バイナリがASLR…

マインスイーパ?

わけあって、マインスイーパ?のプログラム書いてみた。コア部分のみだけど。初めはRubyで書いて、C++で書きなおし、間違いに気づいたため、もう一度C++で書きなおした。にしても相変わらずC++は苦手だ 最後の版のソースを載せてみる。たまにはアウトプット…