2013-06-05 i8086の命令表 x86-16 i8086(16bitのx86)の命令フォーマットについて理解を深めるため、データシートを写経して表に整理しました。探せば既にあるとは思いますが、勉強のため手を動かしてみました。 続きを読む
2013-06-03 MINIX 2事始め MINIX x86-16 16bitのx86コードに触れたくなりました。そこでMINIX 2に目を付けました。MINIX 2は16bitと32bitの両方に対応しています。16bitの方は80286のプロテクトモードを使用しているためリアルモードではありません。カーネルではなくユーザープログラムの動きを追いたいので、ユーザーだけを見ている限りはリアルモードとの違いは少ないのではないかと予想しています。詳しいことは触りながら調べてみる予定です。 続きを読む
2013-05-28 F#でJIT F# JIT x86 x64 今までPythonやC#やNode.jsでJITを実装しました。 PythonでJIT (Windows 32bit) PythonでJIT (Mac OS X 64bit) C#でJIT Node.jsでJIT 今回はF#版です。C#版をほとんどそのまま焼き直しただけですが、それだけでは面白くないので、環境を判定して64bitにも対応しました。 続きを読む
2013-05-28 Node.jsでJIT JavaScript Node.js JIT x86 x64 今までPythonやC#でJITを実装しました。 PythonでJIT (Windows 32bit) PythonでJIT (Mac OS X 64bit) C#でJIT 今回はNode.jsのrefモジュールとffiモジュールを使用します。npmでインストールする必要があります。残念ながらブラウザ上では動きません。 続きを読む
2013-05-28 ELFの動的リンク(2) ELF Python Win32 x86 x64 JIT 前回はELFファイルの構造を示しながら、動的リンクに必要な処理を説明しました。 ELFの動的リンク(1) 今回はPythonで実装した簡易ローダを見ながら、実際の処理を追っていきます。 elf-simple.py 32bit Windows上でELFファイルを読み込み、動的リンクを解決して実行します。Pythonに標準で付属するctypesモジュールを使えば簡単にバイナリ処理できます。 続きを読む
2013-05-25 ELFの動的リンク(1) ELF SVG これから2回に渡って、ELFの動的リンクについて見ていきます。※ 試験的に文中の図はインラインSVGで描いています。(ソース)ELFファイルの中はセクションとセグメントで二重に分割されています。属性が共通するセクションをグループ化したものがセグメントです。セクションはリンカ、セグメントはローダで処理することを想定したブロックです。 続きを読む