タグ

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

  • ホワット・ア・ワンダフル・ワールド tgmath.h の実装ってどうやってんだ ?

    私は知識に何ものかを付け加え,また他の人々がより多くのものを付け加える手助けをした --- G.H.ハーディ 今,なんか手元の Windows 機の gcc だと,/usr/include に tgmath.h が見つからない (include もできないっぽい) ので,メモだけ. J 2007-01-15 ■ Cで型安全可変長配列ライブラリをつくる のコメント欄 shinichiro_h 『C のテンプレートというと、既に言ったことあるかもですが、 C99 の tgmath.h は C でテンプレート関数の特殊化やったりしててステキだと思います。』 (2007/01/18 14:56) 確かに,C99 の tgmath.h の仕様はムチャクチャです. プログラミング言語 C の新機能 9.6 tgmath.h: 型総称数学関数 とても標準 C99 の枠内で実装できるとは思えないのですが…

    syuu1228
    syuu1228 2012/12/15
    うぉぉ…:tgmath.h の実装ってどうやってんだ ? - ホワット・ア・ワンダフル・ワールド -
  • ホワット・ア・ワンダフル・ワールド Vala のインストール

    Vala - Compiler for the GObject type system C# like な言語で,C に落ちて,GLib オブジェクトシステムと完全に統合されている点が特徴の言語です.普通の言語だと,Gtk を使おうと思うといろいろ面倒ですし,誰かがラッパーを書いてちゃんとメンテナンスしてくれないと駄目です.僕はいままでまともに最新の Gtk が使える C 以外の言語を見たことがありません(だいたい古いバージョンで止まってたり,バグが多かったり,使えない API が多かったり,オブジェクトシステムとの統合が不完全なせいでいろいろと難しい問題 (GC との絡みが多い) があったり).Vala ではそのような心配はないようです. Windows だと面倒ですが,ほとんどの PC-UNIX 環境では最初から GLib は入っていると思いますので,生成される C コード自体はかなり

    syuu1228
    syuu1228 2009/08/25
    これは面白そう
  • ホワット・ア・ワンダフル・ワールド Effective assembly language : 退避しなければならないレジスタを知りたい時は setjmp のソースを読もう.

    kosaki さんからコメントをいただきました. >> 壊しちゃいけないのが ebx, esi, edi, ebpとセグメントレジスタ ちなみに、壊しちゃいけないレジスタを調べるいちばんいい方法はsetjmpのソースを読むこと。 CPUによらず、こわしちゃいけないレジスタは保存してくれよるので、不慣れなCPUの時は参考になりますえ なるほど.というわけで,さっそく glibc-2.4 のソースを落としてきて,とりあえず glibc-2.4\sysdeps\i386\setjmp.S を開いてみた. /* Save registers. */ movl %ebx, (JB_BX*4)(%eax) movl %esi, (JB_SI*4)(%eax) movl %edi, (JB_DI*4)(%eax) /* スタックポインタ保存 */ leal JMPBUF(%esp), %ecx /* S

  • 1