【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

C++

インタプリタのクラス設計

自作インタプリタを少しずつ進化させて、複数のCPUやOSをサポートできるようになりました。クラス設計で試行錯誤した過程を残しておきます。 https://bitbucket.org/7shi/i8086tools ※ 文中の図はインラインSVGで描いています。(ソース)

void*とオフセット

C++

第6回 コンパイラ実装会で出た話題です。以下のコードがエラーになります。なぜ? test.cpp #include <stdlib.h> int main(void) { void *p = malloc(100); *(void **)&p[10] = reinterpret_cast<void *>(free); return 0; } コンパイル結果 $ g++ test.cpp test.cpp: In funct</void></stdlib.h>…

関数のサイズ

第6回 コンパイラ実装会で出た話題です。関数のサイズを取ろうとしたら1になりました。なぜ? test.c #include <stdio.h> int main(void) { printf("%d\n", sizeof(putchar)); return 0; } 実行結果 $ gcc test.c $ ./a.exe 1int aへのポインタが&aであるように、putc</stdio.h>…

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

C++

id:n7shi:20111113で告知したマーク&スイープ勉強会が無事に完了しました。ご参加の皆様、お疲れ様でした。 マーク&スイープ勉強会 View more presentations from n 7shi pptx版(同内容): msgcben.pptx 配布資料: msgcben.pdf, msgcben.docx サンプル: m…

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

C++

報告が大変遅くなりましたが、id:n7shi:20111011で告知したサンクと継続の勉強会が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: thunkben.pdf, thunkben.docx サンプル: https://bitbucket.org/7shi/thunkben/downloads (1.0-20111201) To…

マーク&スイープ勉強会

C++

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

vtable

COMのバイナリ構造とC++の関係を確認するため、vtableのメモリレイアウトを調べました。 https://gist.github.com/1362138 仮想ではないメンバ関数はsizeofに影響しません。 仮想関数がない場合、インスタンスへのポインタからメンバ変数が入っています。 仮…

サンクと継続の勉強会

C++

呼び出しの変換などを処理するために実行時に生成されるコードをサンクと呼びます。サンクを利用したクロージャの実装を説明します。またサンクとは別に、コルーチンによる継続の実装も試みます。独自言語に組み込むことを想定した説明ですが、今回は独自言…

判別共用体 (2)

C++

id:n7shi:20110423で取り上げた判別共用体の変換例で、C#の継承とvirtualを使った形式は冗長ですが素朴だと思います。C++なら宣言と実装を分離できるので、評価関数だけを横断的にまとめられるのではないかと思い試してみました。

コマンドライン版インタプリタ

id:n7shi:20110408で開発したSilverlight版のPDP-11インタプリタですが、ブラウザから出してコマンドラインで動かなければ、実用には厳しいと感じました。そのためC++で書き直して、Win32とPOSIXに対応しました。Win32はMinGW、POSIXは Interix 3.5, NetBSD …

MIZU GAME for NetWalker

id:fslashtさんのMIZU GAMEをC++に移植して、Interix上のクロス開発環境(id:n7shi:20091212)でNetWalker用にビルドしました。バイナリ(NetWalker/Windows)とソース(gcc/VC)を置いておきます。 MizuGame-Native.zip 実機がないため原作者のid:fslashtさんに動…

簡易ダウンローダ

C++

HTTPでファイルをダウンロードするツールを作成しました。POSIX/Win32対応です。 ライセンス: パブリックドメイン https://bitbucket.org/7shi/httpget この手のツールはたくさんありますが、他のプロジェクトのブートストラップとしてソース込みで配布する…