トップ 検索 一覧 ヘルプ RSS ログイン

今更MinGW 2009.06(5) nasm,yasmの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!今更MinGW 2009.06(5) nasm,yasm

アセンブラのnasmとyasmをビルドしインストールする。

nasmとyasmはどちらもx86の''SIMD命令(MMX,SSE,SSE2等)に対応したアセンブラ''で、
殆どのケースでこれらの命令を利用した高速化のために使用される。一昔前にはnasmがこの用途での一人勝ち状態であったが、一時期更新が滞り、新規命令に対応しなかったことから、リプレースとしてyasmが登場した。その後nasmの更新は再開したが、yasmに移行してしまったプロジェクトも多いため、''用途は同じソフトウェアではあるが、両方インストールしておくのが間違いない''。
殆どのケースでこれらの命令を利用した高速化のために使用される。一昔前にはnasmがこの用途での一人勝ち状態であったが、一時期更新が滞り、新規命令に対応しなかったことから、リプレースとしてyasmが登場した。その後nasmの更新は再開したが、yasmに移行してしまったプロジェクトも多いため、''用途は同じソフトウェアではあるが、両方インストールしておくのが間違いない''。また、yasmはx86-64に対応している。

!!導入
これらは公式サイトにバイナリが用意されているのでそれらをインストールしても良いのだが、猫科研究所ではMinGW公式以外のものはソースで得るようにしているので、ここではビルドする。また、''ビルド手順が標準的''であることから、MinGW/MSYSでのビルドを学ぶに絶好の題材だ。公式のバイナリがMinGW向けに行われているかも不明なので、ソースからビルドしてみるとよい。

[nasmの公式サイト|http://nasm.sourceforge.net/]と[yasmの公式サイト|http://www.tortall.net/projects/yasm/]からそれぞれ最新のソースを取得してこよう。猫研パックa003では''nasm-2.05.01.tar.bz2''と''yasm-0.8.0.tar.gz''を使用しているが、好みで最新のものでも構わない。ここではソースアーカイブを/src以下に展開したものとして解説する。

まずはnasmから。
 pushd /src/nasm-2.05.01
 ./configure --prefix=/mingw
 make
 make strip
 make install
 cp /mingw/bin/nasm.exe /mingw/bin/nasmw.exe
 popd
configureの''--prefix''は、make installで完成した.exeや.dll、.a等をインストールする先のディレクトリを指定している。

通常''make strip''は不要(大抵はmake時に同時に行う)だが、nasmの場合は明示する必要があり、これを行わないとバイナリが大きくなる。''strip''とは、シンボル情報の削除を意味しており、makeを通さずに使用するstripというコマンドそのものもあるので覚えておくと良い。

最後の.exeのコピーは、希にWindows環境ではnasmではなくnasm'''w'''.exeを使用するようMakefileに記述しているソフトウェアがあるため、その対策をしている。MSYSからのみnasmを使用するならシェルスクリプトで代用しても良い。

次にyasm。
 pushd yasm-0.8.0
 ./configure --prefix=/mingw
 make
 make install-strip
 popd
''make install-strip''はstripしたバイナリをインストールするという意味だろう。