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

2011-01-01から1年間の記事一覧

最終回 PE勉強会 ARM編

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

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

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

第1回 コンパイラ実装会

みんなでコンパイラの実装に挑戦する勉強会です。バイナリいじりの基礎から始めて、実行ファイルを自前のコンパイラで作って動かすことを目標にします。コンパイラをきっかけにして、各種マシンコードやOSのメモリ管理について理解を深めるのが狙いです。 20…

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

報告が大変遅くなりましたが、id:n7shi:20111112で告知した第5回 PE勉強会 MIPS編が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: peben05.pdf, peben05.docx, peben05.xlsx サンプル: https://bitbucket.org/7shi/peben/downloads (05-201…

はてなブログはじめました

はてなブログがオープンベータに移行したので登録しました。旧ブログから移行します。旧ブログ: http://d.hatena.ne.jp/n7shi/

副作用のある評価関数

F#

このエントリは F# Advent Calendar 2011 第17回目の参加記事です。狙ったわけではありませんが去年と同じ17番手です。元ネタは[twitter:@gab_km]さんの東京F#読書会 20110930に参加したとき、UNIX V6で使われているK&R以前の古いC言語のlexerを書いていて、…

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

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月…

第5回 PE勉強会 MIPS編

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

vtable

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

手動呼び出し

COMのメモリレイアウトを理解するため、なるべく既存のマクロを使わないでC言語から呼び出してみました。 https://gist.github.com/1362172 手軽にCOMのサンプルを作る方法が見当たらなかったので、以下の Project1.dll を使わせていただきました。 C言語でC…

Lions本読書会合宿 結果報告

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

Lions本読書会合宿LT発表資料

Lions本読書会2011秋合宿で発表したLTの資料を公開します(他の方の発表)。id:n7shi:20111011で告知したサンクと継続の勉強会に絡めた内容です。 V6でJIT・部分適用・継続 View more presentations from n 7shi pptx版(同内容): v6-jit-th-cr.pptx ソース…

Insight

InsightはgdbのGUIフロントエンドです。昔のMinGWには標準で付属していたのですが、最近は含まれていないようです。公開されているバイナリで一番新しいのは以下の6.6のようです。 insight-6.6-mingw.tar.bz2 これを展開してbin/insight.exeを起動すれば良さ…

サンクと継続の勉強会

C++

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

C#で学ぶF#入門 完了報告

C# F#

id:n7shi:20110620で告知したC#で学ぶF#入門が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: cs2fs.pdf(全ページ), cs2fs.docx(1-11ページ), cs2fs-2.docx(問8・全問題の回答) Togetter まとめ: http://togetter.com/li/150031 私が…

巨大ファイルのマッピング

id:n7shi:20101204でUNIX V6のファイルシステムを分析しましたが、リバースエンジニアリングをソースで裏付ける手法だったため漏れがありました。以下の記事で二重間接参照の存在を知りました。 id:takahirox:20110815:1313398103 SIMH上のUNIX V6で実験して…

空配列

VB.NET(2010)で空配列を作る方法で悩みましたが、いくつか書き方を見付けました。 Dim a(-1) As String Dim b = New String() {} Dim c = CType(Array.CreateInstance(GetType(String), 0), String()) ' 追記 追記はid:zeclさんに教えていただいたものにキャ…

gcc-4.6.1の対応アーキテクチャ

gcc-4.6.1がサポートするアーキテクチャについて調べました。ソースのgcc/configを見ると以下の39種類が存在します。 alpha, arc, arm, avr, bfin, cris, crx, fr30, frv, h8300, i386, ia64, iq2000, lm32, m32c, m32r, m68hc11, m68k, mcore, mep, microbl…

カスタムハフマン符号

ZIP

ZIP勉強会(id:n7shi:20110529)を開催しましたが、時間の都合もありカスタム(動的)ハフマン符号については「RFC 1951を読んでください」で説明を省略しました。IO_Zlib開発者のid:yoyaさんからコメントを頂いたので、某「例示は理解の試金石」を実践して…

クロスコンパイラ大集合

id:n7shi:20110625でご紹介した「フィーリングで読むアセンブラ入門」で使われているクロスコンパイラをWindows用にビルドしたので配布します。MSYS用です。インストール方法はid:n7shi:20110513を参照してください。 SkyDrive:7shi/公開/MSYS/cross

alpha-elf-gccのパッチ

坂井さん([twitter:@kozossakai])主催の第12回 IT基礎技術勉強会(7/20 19:00)でまたまたアセンブラが取り上げられます。その関連で「フィーリングで読むアセンブラ入門」執筆の構想もあるようです。調査対象として各種CPUのアセンブリが並んでいるページ…

C#で学ぶF#入門

C# F#

かなり先ですが、F#の入門勉強会を開催します。C#との比較に重点を置いて説明しますが、C#未経験の方でもお気軽にご参加ください。 2011年9月10日(土) 午後1時〜6時 マイ・スペース&ビジネスブース池袋西武横店 7号室 (東京都豊島区南池袋1-16-20 ぬかり…

第4回 PE勉強会 完了報告

id:n7shi:20110418で告知した第4回 PE勉強会が無事に完了しました。ご参加の皆様、お疲れ様でした。 配布資料: peben04.pdf, peben04.docx サンプル: https://bitbucket.org/7shi/peben/downloads (04-20110618) 参加者のtwitterリスト: http://twitter.com/…

勉強会 完了報告

ZIP

id:n7shi:20110417で告知したZIP勉強会が無事に完了しました。ご参加の皆様、お疲れ様でした。スライドと資料を公開します。ZIP勉強会 スライド: zipben.pptx 配布資料: zipben.pdf(全ページ), zip-container.xlsx(コンテナ), crc32-code-1.pptx(CRCの…

クロスコンパイラ

第7回 IT初心者勉強会 アセンブラ大会に参加しました。色々なCPUのアセンブリ言語を比較していて、とても楽しかったです。そこで使われていたクロスコンパイラをWindows用にビルドしたので配布します。MSYS用です。MSYSはgccを動かすのに特化しており、Cygwi…

構造を表示

id:n7shi:20101204のファイルシステム読み込みツールを改造して、ディレクトリやファイルの構造が表示できるようになりました。今まではイメージ全体をZIP圧縮して取り出すことしかできませんでしたが、ファイル単位で取り出せるようになりました。Windows F…

名古屋Geek Bar LT

名古屋Geek Bar 5月2日(月)でLTをして来ました。V6関係のツールがメインですが、自己紹介に絡めて独自言語のセルフホスティングも取り上げています。V6 Interpreter (Nagoya Geek Bar 2011-05-02)

判別共用体 (2)

C++

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