Hatena::ブログ(Diary)

七誌の開発日記(旧) このページをアンテナに追加 RSSフィード Twitter

新ブログ Twitter OneDrive Wiki

2011-12-31

はてなブログに移行します

はてなブログがオープンベータに移行したので登録しました。今後ははてなブログの方を更新しようと思います。

ブログ: http://7shi.hateblo.jp/

2011-12-30

[][][]第5回 PE勉強会 MIPS編 完了報告

報告が大変遅くなりましたが、id:n7shi:20111112で告知した第5回 PE勉強会 MIPS編が無事に完了しました。ご参加の皆様、お疲れ様でした。

機材(NT4やシグマリオン)の準備に手一杯で、資料の作成が間に合いませんでした。当日は悪天候で荷物運びも難航したため、主催者が遅刻するという失態を犯しました。ご参加の方には大変ご迷惑をお掛けしたことをお詫び申し上げます。

参加者からのトラックバックがあれば、ご紹介させていただきます。

2011-12-17

[]副作用のある評価関数

このエントリは F# Advent Calendar 2011 第17回目の参加記事です。狙ったわけではありませんが去年と同じ17番手です。元ネタは@さんの東京F#読書会 20110930に参加したとき、UNIX V6で使われているK&R以前の古いC言語のlexerを書いていて、シンボル名は最初の1文字だけ数字が使えないという制約をどう実装するか考えていたことに由来します。

はじめに

データが1つずつ渡される状況での評価関数について考えました。

まず、3より小さいかを判定します。後の例と比較しやすいよう、無名関数にはしていません。

let data = [ 1; 2; 3; 4; 5; 3; 1 ]
let test f =
    for v in data do
        printfn "%d -> %b" v (f v)

let eval v = v < 3
test eval

続きを読む

2011-12-13

[]マーク&スイープ勉強会 完了報告

id:n7shi:20111113で告知したマーク&スイープ勉強会が無事に完了しました。ご参加の皆様、お疲れ様でした。

また、無茶振りにも関わらずセッションをお引き受けいただいたid:atsushienoさん、ありがとうございました。

以下、参加者の方々のレポートです。私の気付いた範囲で追加していますが、漏れがあれば教えてください。

2011-11-30

[]サンクと継続の勉強会 完了報告

報告が大変遅くなりましたが、id:n7shi:20111011で告知したサンクと継続の勉強会が無事に完了しました。ご参加の皆様、お疲れ様でした。

以下、参加者の方々のレポートです。私の気付いた範囲で追加していますが、漏れがあれば教えてください。

続きを読む

2011-11-13

[]マーク&スイープ勉強会

メモリを自動的に解放する仕組みをGCと呼びます。GCの基礎的なアルゴリズムの1つであるマーク&スイープについての勉強会を開催します。Mono開発者のid:atsushienoさんによる Mono for Android でのGC周りについてのセッションも予定しています。

進め方としてはセッションよりも自由時間に比重を置いています。マーク&スイープの基本的な概念とサンプルコードを提示した後は自由時間としています。日曜工作のような感覚で、普段作ることのないGCの実装に挑戦していただくという趣旨です。ご参加をお待ちしています。

2011-11-12

[][][]第5回 PE勉強会 MIPS

f:id:n7shi:20111113214454j:image:medium:rightf:id:n7shi:20110917081107j:image:medium:right

Windowsの実行ファイル (EXE/DLL) で使われているPE (Portable Executable) 形式についての勉強会です。バイナリいじりの基礎から始めて、EXEファイルやDLLファイルをコンパイラなしで作って動かすことを目標にします。PEをきっかけにして、各種マシンコードやOSのメモリ管理について理解を深めるのが狙いです。

参加者全員分のNT4と、MIPSを搭載したCEマシンを10台ほど用意する予定です。NT4のMIPS版はQEMUインストールできます。CEマシンは実機での動作を確認できます。PEの観点から、x86MIPSの違い、NTとCEの違いなどを比較します。

特にセッションはなく、みんなで開発や質問をする形式です。初めて参加される方や途中の回に参加できなかった方には、前回までの資料による対応も可能ですので、お気軽にご参加ください。

2011-11-11

[][]vtable

COMのバイナリ構造とC++の関係を確認するため、vtableのメモリレイアウトを調べました。

  1. 仮想ではないメンバ関数はsizeofに影響しません。
  2. 仮想関数がない場合、インスタンスへのポインタからメンバ変数が入っています。
  3. 仮想関数がある場合、インスタンスへのポインタにはvtableへのポインタが入っていて、その次にメンバ変数が入っています。
  4. 継承するとvtableがあればポインタは差し替えられ、メンバ変数は後ろに追加されます。
  5. 仮想関数コールはvtableを読むラッパーを経由します。

2011-11-10

[][]手動呼び出し

COMのメモリレイアウトを理解するため、なるべく既存のマクロを使わないでC言語から呼び出してみました。

手軽にCOMのサンプルを作る方法が見当たらなかったので、以下の Project1.dll を使わせていただきました。

続きを読む

2011-10-16

[][]Lions本読書会合宿 結果報告

Lions本読書会2011秋合宿での作業についてまとめたスライドを公開します(他の方の発表)。UNIX V6のCコンパイラを改造しようとして、前段階のビルドにハマって何もできなかった話です。

続きを読む