Entries from 2009-08-01 to 1 month

構造体の padding に関する注意点

構造体に padding がある状態で、構造体に jmp するとプロセスが死ぬ。ということに気づかずハマった。 nop で padding してくれればいいのに。

今日の復習

オブジェクト共有 0割 プロセッサ入出力 I/F 10割 Material mapping 10割 キャッシュの基礎 8割 WEwLC tools 10割 8月も終わりか。9月分の復習カードの取り出しとソートをしよう。

FFI callback 実装中

gcc には __LOCAL_SIZE とか naked がないので全てインラインアセンブラで書くのは無理だ。 as さん使うか。

今日の復習

OOSC クラス 10割 Basic Transform 10割 プロセッサ入出力 I/F 0割 Web tier 10割

GCC Machine Constraints

GCC のインラインアセンブリ拡張の AMD64 用は、まだないっぽい。引数に使われる R9 などに簡単にアクセスできたら楽なのに。 Machine Constraints - Using the GNU Compiler Collection (GCC)

FFI callback 実装中

int returnCallback(int (*func) (void)) { return func(); } (let () (define libffitest (open-shared-library "./libffitest.so.1.0")) (define returnCallback (c-function libffitest int returnCallback void*)) (let ([callback (make-c-callback 'in…

今日の復習

DB Magnetic Disk 10割 Value Objects 10割 Web Tier 0割

寝返り対策にベッドガード購入

寝返りでベッドに頭を打ったり、はさまったりすると危ないので全周ベッドガード ひよこを購入。 ベビー用品は近所の薬局よりも、楽天で買った方が安かったりする。 例えばミルクは 明治ほほえみ850gは楽天で買うと近所のどの薬局よりも安い。(2個以上買う…

Re:C/C++ で構造体のサイズが違う

C/C++ 関係なかった。uIP のビルドには -fpack-struct オプションが付いてた。 Makefile をコピペしたので気づいていなかった。 これのせいで uip_conns[index] へのアクセスがおかしくなってた。

operator new static メンバ関数

c++

operator new をクラスの static メンバ関数にすると、そのクラスを new するときに使われるらしい。 FFI callback で実行可能属性のメモリ上に構造体を new するのに使ってみた。placement new より便利。

今日の復習

Test Harness でクラスをインスタンス化できない 10割 モジュール性 10割 Projection 10割

C/C++ で構造体のサイズが違う

extern "C" しているんだけど struct uip_conn のサイズが違う。何か見落としていないかもう一度チェックしよう。

寝返りおったわ

ひげ太が生後2ヶ月24日で寝返りをした。妻の機転により動画も撮れた。おめでとう! 普通は4〜5ヶ月頃らしい。

FFI callback 準備 - 実行可能属性メモリ

/* int return3() { return 3; } */ #ifdef ARCH_IA32 ASSERT_TRUE(mem.push(0x55)); // push %ebp ASSERT_TRUE(mem.push(0x89)); // mov %esp,%ebp ASSERT_TRUE(mem.push(0xe5)); ASSERT_TRUE(mem.push(0x83)); // sub $0x8,%esp ASSERT_TRUE(mem.push(0xec…

今日の復習

OOSC モジュール性 7割 Projection 0割 データで決まるプログラミング構造 10割

Erlang のビルドが jinterface 周りでエラーになるときは

./configure で jinterface をオフには出来ないので java とか javac をリネームしておいて ./configure し直すと良い。 apt-get remove gcj でも可(使っていなければ) あれ? disable-jinterface あるのか?

Emacs dired で特定のパターンのファイルのみ選択

find-name-dired 。

ls ~ を晒すのが流行っているらしい

家の開発用 ThinkPad X60(Ubuntu)。 FPKakeibo600 、nanpeidai.sh とかが生々しい。あ。spon 進めないと。 3d-data.scm VTune eijirou info project_create.pl vtune-work4 AdobeReader.desktop a.out firefox.sh intel psyntax.scm xf86-input-evdev Change…

Scheme 処理系の FFI callback の仕様を見る

FFI callback とは何か? Scheme の手続きを C のコールバック関数として渡す事の出来る仕組み。 着目する点 マーシャシリングを「誰が、いつ、どのように」やっているか API Ypsilon callback 関数を引数に持つ、C 関数を Scheme から利用する際に callback…

今日の復習

モジュール性 6割 以下10割 記憶の階層の利用 Smart UI Antipattern マインドマップの作り方

3章「データで決まるプログラムの構造」- 珠玉のプログラミング(Programming Pearls)

珠玉のプログラミングの3章。 日付周りのコードを書いたことがなかったので勉強になった。 3.7.1 税率と境界値を配列に格納すればコンパクトに。 3.7.2 問題が曖昧な気がする。コード参照。 3.7.3 コード参照。 3.7.4 アルゴリズムは以下のサイトを参考にし…

不可解なり

Mona の uIP が落ちる場所を調べていったところ ++(uip_connr->nrtx); の前後で全然関係ない、uip_appdata ポインタが壊れる。 なんだこれは。

let/named-let を backend にそのまま渡す

psyntax-system-macros に core-macro として let を追加 psyntax-system-macros から (let (macro . let)) を削除 build.ss に buile-let, build-named-let 追加 expander.ss core-macro-transformer に let 追加 expander.ss に let-transformer 追加 ポイ…

今日の復習

OOSC オブジェクトを抽象的に見るには OOSC 総称型 DDD Entities 月

psyntax の展開をいじりたい let/named-let

let/named-let がそれぞれ、lambda, letrec に展開されてしまうのだが、展開せずにバックエンドに渡す方法を模索中。

今日の復習

Erlang 分散プログラム 10割 DDD entities 6割

VirtualBox を利用してローカルにErlang 分散テスト環境を構築する

背景 Erlang の分散ノードのデモや、テストをしたい。デモをする環境によってはネットワークにつながらない場合もあるので、すべてローカルで完結させたい。 というような環境を作ります。 環境 VirtualBox ホスト: Mac OSX ゲスト: Ubuntu 9.04 AMD64 手順 …

psyntax の展開パターンを変更

いくつかベンチマークをとっていて気づいたこと。 R5RS モード(-5オプションで起動)では十分速いが、R6RS モードでは遅いものがある。 psyntax ではコードを変換してバックエンドに渡すのだが、そこで効率的でないコードになっているのかもしれない。 psyn…

日々成長

日々成長している、ひげ太の進化ぶりに驚かされる毎日。 夜8時間寝ることがある 人形が上から、ぶら下がっているおもちゃを一心不乱にたたきまくる 父母を見つけて「ニコッと」笑う 「ひとりよりふたりがいいさ、ふたりよりさんにんがいいー」の歌に喜ぶ 「…

今日の復習

光 10割 OOSC クラス10割