2010-01-01から1年間の記事一覧
MASMでシンボルをエクスポートする方法として、PROC〜ENDPの方法がよく紹介されます。インポートしたシンボルにジャンプする例です。 .386 .MODEL FLAT .CODE EXTERN proc0:NEAR proc1 PROC jmp proc0 proc1 ENDP END 他のアセンブラから変換しようとするとE…
VC++でビルドしたPEバイナリをa.outに変換してMINIXで動作しました。VC++内でバイナリ変換まで行うようにまとめました。 http://github.com/7shi/minix-tools/tree/20100208 MINIX用バイナリを生成するための設定は以下の通りです。
FOSDEM 2010にあわせてMINIX 3.1.6がリリースされました。 ダウンロード id:n7shi:20100203のクロス開発環境の配布物を3.1.6に更新しておきました。Virtual PC 2007用のNICドライバが入っていますが、やや癖があるため説明します。
a.outについて調べた結果、仕様的にはPEから変換が可能なようです。変換ツールを作ってみました。 http://github.com/7shi/pe2aout id:n7shi:20100207のコードをgcc(MinGW)でコンパイルして変換してみます。 % i686-mingw32-gcc -o exit.exe -masm=intel -s …
id:n7shi:20100205に引き続いてa.outを分析します。アセンブリ版ではサイズ縮小のためセクションを削りましたが、セクションを確認するためC言語版を分析します。 int m[] = { 0, 1/*EXIT*/, 42, 0, 0, 0, 0, 0, 0 }; void start() { asm("mov eax, 0; mov e…
id:n7shi:20100202でアセンブリ化したサンプルのダンプです。 00000000: 01 03 04 10 30 00 00 00-38 00 00 00 00 00 00 00 00000010: 00 00 00 00 00 00 00 00-38 00 50 00 00 00 00 00 00000020: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 0000003…
githubにpushしてからcommitが間違っていたことに気付きました。以下のようにすると取り消すことができます。【注意】commitだけでなく変更も失われます。ローカルのソースツリーは残された最後のcommitに戻されます。変更を保存したい場合は使わないでくだ…
UNIX系OS上でMINIXのクロス開発環境を構築する方法です。ACKは後回しにして今回はgccだけです。MINIXはバイナリファイル形式としてa.outを使用しているため、binutilsやgccに独自のパッチを当てています。パッチ適用済みのソースはMinix Portsにまとめてあり…
id:n7shi:20100201の続きです。インラインアセンブラをIntel形式にしてみました。 void start() { int m[] = { 0, 1/*EXIT*/, 42, 0, 0, 0, 0, 0, 0 }; asm("mov eax, 0; mov ecx, 3; int 0x21" :: "b"(m)); } # gcc -masm=intel -nostdinc -nostdlib exit.c…
結城浩先生のWikiにexitするだけのバイナリを削っていく記事の翻訳があります。 Linux で動く極小 ELF 実行ファイルをつくる怒涛のチュートリアル これをMINIXでもやってみようと思い、インラインアセンブラでシステムコールを呼ぶコードを書いてみました。 …
【追記】MINIX 3.1.6がリリースされました。VPCドライバが入っています。 ⇒ id:n7shi:20100208id:n7shi:20100130のドライバを3.1.5にバックポートして、簡単にインストールできるようにISOイメージを用意しました。 minix-3.1.5-tulip-20100131.iso Virtual …
【追記】MINIX 3.1.6がリリースされました。VPCドライバが入っています。 ⇒ id:n7shi:20100208MINIXのtrunkにはVirtual PCのNICドライバが追加されましたが、動作しなかったためパッチを作成しました。【追記】r6050で修正されました。 ⇒ Revision 6050: imp…
MINIXをリリースからtrunkに上げようとしてハマりました。/etcは自動マージできないため、ばっさり消してしまうと簡単でした。最低限、fstabは残しておきます。 cp /etc/fstab /tmp rm -rf /etc /usr/etc cd /usr/src/etc make install mv /tmp/fstab /etc c…
id:masami256:20100127のCore 2 Duo T9600 @ 2.80GHz+KVMの威力に圧倒されたので、Core 2 Quad Q9550 @ 2.83GHzでも計測してみました。 Virtual PC 2007 SP1 Intel VT有効 0:14.03 real 0:05.40 user 0:03.73 sys VMware Player 3.0.0 Intel VT有効 0:18.40 …
各種VMでMINIX 3.1.5を起動して、カーネルビルドの時間を計測しました。かなりスピード差があります。 Virtual PC 2007 SP1 AMD-V有効 0:27.90 real 0:12.51 user 0:10.06 sys 【追記】VirtualBox 3.0.12*1 AMD-V有効 0:57.61 real 0:15.73 user 0:36.71 sys…
gotouさんとのやり取りで.NET Compact FrameworkやアプリのコピーでActiveSyncについての質問があったためこちらにまとめます。Windows Mobile端末には標準でActiveSyncがインストールされていますので、追加インストールする必要はありません。ActiveSyncな…
GdiumでOpenBSDの動作確認を行うため、カーネルをクロスビルドしました。最初は無難にOpenBSD上で行い、同じ動作を他のOSで再現するという手順を採りました。 OpenBSD(i386)上でOpenBSD(mips64el)カーネルとユーザーランドをクロスビルド Interix上でOpenBSD…