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

MINIX 2事始め

16bitのx86コードに触れたくなりました。そこでMINIX 2に目を付けました。

MINIX 2は16bitと32bitの両方に対応しています。16bitの方は80286のプロテクトモードを使用しているためリアルモードではありません。カーネルではなくユーザープログラムの動きを追いたいので、ユーザーだけを見ている限りはリアルモードとの違いは少ないのではないかと予想しています。詳しいことは触りながら調べてみる予定です。

続きを読む

F#でJIT

今までPythonC#やNode.jsでJITを実装しました。

今回はF#版です。C#版をほとんどそのまま焼き直しただけですが、それだけでは面白くないので、環境を判定して64bitにも対応しました。

続きを読む

Node.jsでJIT

今までPythonC#JITを実装しました。

今回はNode.jsのrefモジュールとffiモジュールを使用します。npmでインストールする必要があります。残念ながらブラウザ上では動きません。

続きを読む

ELFの動的リンク(2)

前回はELFファイルの構造を示しながら、動的リンクに必要な処理を説明しました。

今回はPythonで実装した簡易ローダを見ながら、実際の処理を追っていきます。

32bit Windows上でELFファイルを読み込み、動的リンクを解決して実行します。Pythonに標準で付属するctypesモジュールを使えば簡単にバイナリ処理できます。

続きを読む

ELFの動的リンク(1)

これから2回に渡って、ELFの動的リンクについて見ていきます。

※ 試験的に文中の図はインラインSVGで描いています。(ソース

ELFファイルの中はセクションとセグメントで二重に分割されています。属性が共通するセクションをグループ化したものがセグメントです。セクションはリンカ、セグメントはローダで処理することを想定したブロックです。

続きを読む