2005-11-09から1日間の記事一覧

おまけ

最適化とキーワードに応じたソースコード生成を。http://shinh.skr.jp/koneta/fngcg.cgi?key=SDLっぽいコードをソース。http://shinh.skr.jp/koneta/fngcg.rbhttp://shinh.skr.jp/koneta/ngcg_fimp.rb次世代のスーパープログラマは、 Google の I'm feeling …

超次世代IDE

http://shinh.skr.jp/koneta/ngcg.cgi上記妄想から次世代のIDEをサクっと作ってみました。なんとソースコードが全て自動生成されます。以下ソース。http://shinh.skr.jp/koneta/ngcg.rbhttp://shinh.skr.jp/koneta/ngcg_import.rb以下に依存。 Ruby/BDB (htt…

超推論言語妄想

http://www.kmonos.net/wlog/55.php#_1446051108面白いなぁ…こういうのがメインストリームになるってのはちょっと予測しずらくもあるんですが。もう少しルールが明確でないと、この場合は推論してくれるんだっけ…とか思って結局メソッド名全部書いちゃいそう…

extern void* __dso_handle;と宣言してこの __dso_handle の NULL チェックを行うことによって自分が dynamic link されているか static link されているかを知ることができる。ちなみに __dso_handle の中身はただの自分自身を差すポインタ。crt(begin|end)…

main 後も ctor が dtor になるだけでほとんど同じ。なんか気になってた __JCR_LIST__ と __JCR_END__ は Java Class Registrer とかだそうで、 _Jv_RegisterClasses とかと関係あるんだろうたぶん。 i@u gcc/i386-redhat-linux/4.0.1> nm -o *.o G global c…

objcopy --rename-section .ctors=.ctors. begin.oとかすると、たぶん最初に実行される .ctors セクションになる。もしくはリンク時に最後に書くオブジェクトファイルにするといい。このへんはリンカスクリプトの KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors))…

昔やったみたいに .ctors セクションに C++ で書き込むことは簡単にできる。C でも GCC 拡張を使えばいい。 #include <stdio.h> void ctor() __attribute__((constructor)); void ctor() { printf("ctor\n"); }</stdio.h>

起動順序としては、 main 以前に、 _start => __libc_start_main => __libc_csu_init => _init から、 __do_global_ctors_aux が呼ばれる。これは __CTOR_LIST__ と __CTOR_END__ の間を実行してまわる。この間には _GLOBAL__I_main や、 _GLOBAL__I_hoge.c …

main 以前

crtbegin と crtend を見てみる。 crt* ってのは gcc が勝手にリンク時に追加する小さな static link library 。

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h