熱血!アセンブラ入門 サポートページ

(旧:フィーリングで読むアセンブラ入門)

アセンブラ出力環境の構築のためのアーカイブ(書籍版)を以下で配布します. (2013/08/26版)

注意! 64ビット環境だとうまくビルドできないアーキテクチャがあります. 詳しくは以下の注意1を参照してください.
以下でビルド済みのVMイメージを配布しているので, そちらの利用も検討してください.

上記アーカイブファイルは,環境構築用スクリプトとパッチ類,サンプルプログラム, またサンプルプログラムをビルドしてアセンブラを出力した状態でアーカイブして あります.このため解凍すれば,とりあえずは(環境構築無しでも)アセンブラを 見てみることができます.

(2013/01/26追記:上記環境をインストール済みのVirtualBox用VMイメージを こちらで配布しています.ご自由に利用ください. ゲストOSはFreeBSDで軽いので,非力なPCでも動作可能です)

FreeBSD, CentOS, Ubuntu, WindowsXP+Cygwinで環境構築し,出力された 逆アセンブラファイルが一致することを確認してあります.

さらに自身のPCに環境構築すれば,自分でアセンブラ出力させていろいろ試すことが できます.

環境構築には binutils-2.21.1, gcc-3.4.6, gdb-7.3.1 を必要とします. また「newlib利用版」を使えば,printf()などの標準ライブラリ関数を利用する ことができます.(この場合は newlib-1.20.0 を必要とします)

binutils, gcc, gdb はGNUのサイト, newlib はRedHatのサイトから ダウンロードできます.いちおうオリジナルを以下でも配布します.

環境構築の手順については,添付のREADMEを参考にしてください (基本作業はすべてスクリプト化してありますので,スクリプトを実行するだけです). マルチコアのPCの場合は,ビルド前に config.sh の makeopt のコメントを外して -j オプションを有効にしてやるとビルドが高速になるのでおすすめです.

gdbが不要な場合(アセンブラ出力だけさせたくて,シミュレータ実行は不要な場合)は gdbのビルドを外してスクリプト実行してください.(付属のシェルスクリプトは 簡単なものばかりなので,読めばわかると思います)

(注意1)x86-64のプラットホーム上ではうまくビルドできないアーキテクチャが いくつかあります.この場合はVM利用でx86アーキテクチャ上にUbuntuとか入れて そっちで環境構築するか,必要なアーキテクチャだけ選択してビルドすることを おすすめします.
※ arc, fr30, frv, i960, mcore, v850 の6種類のアーキテクチャがビルドに失敗 します.またARM系のアーキテクチャ(arm, strongarm, xscale-elf)ではアセンブラ 出力が異なってくるようです.
※ h8300, m68k も標準のままではビルドに失敗するのですが,これらは修正パッチが 既に出ていて,本書の環境でも同等のパッチを包含しているので,とりあえずは 問題は起きません.
h8300向け修正情報
m68k向け修正情報

(注意2) 環境構築の際には,システムにあらかじめインストールしておく必要があるツール類 があります.詳しくは過去の記事を参考にしてください. 構築に失敗した場合は,まずは未インストールのツール類が無いか,確認してみて ください.(失敗したアーキテクチャのビルドディレクトリで再度 make することで, エラーメッセージを確認できます)

(注意3) makeoptの-jオプションを付加して実行すると高速なのですが,まれにビルドに 失敗する?ことがあるように思います(あまりきちんと検証していないので, 不確かな情報です).もしも「あれ?」と思ったときは,-jオプションを外して 再度試してみてください.まあ不安ならば,makeoptは有効にせずにデフォルトのまま 使うのがいいでしょう.
(2012/10/20追加情報) gdb/mn10300-elf のビルドに決まって失敗しインストールされないようです (cross/cross2の両方で,FreeBSD, Ubuntu, CentOS, Cygwin全てで失敗). さらに,その後に cross/build/gdb/mn10300-elf で make ; make install すれば, (-jオプションはそのままでも)今度はうまくいくようです (Ubuntuでは make install がエラーになったが,gdb自体はインストールされている ようだ). オプションはそのままなのになぜうまくいくのか原因は謎…. それ以外は大丈夫みたいです.

(2012/10/22追加情報) gdb/sim/mn10300/Makefile.inでファイルの依存関係の記述が不足しているため, -jオプションにより並列コンパイルするとエラーになることが判明しました. 修正パッチを含めてアーカイブを作成しなおしましたので,最新版の環境を利用すれば 大丈夫です.(Ubuntuでは上記同様に make install がエラーになりましたが,gdb自体 はインストールされているようです)

全てのアーキテクチャ用のクロスコンパイラをビルドしようとすると, 以下の容量が必要になります.(cygwinだと2〜3割増しになります)

また時間も数時間〜数日(!)かかります(PCのスペックによります). さらにnewlib利用のcross2だと,時間はだいたい倍くらいかかる感じです. Cygwinだとさらに時間がかかる感じです.ビルドディレクトリ(crossを展開する ディレクトリ)がUSBハードディスクやネットワークストレージ上にあると, とてつもなく遅くなると思われるのでおすすめしません.

基本,しばらく電源いれっぱなしにする前提で始めてください. さらに,この手の作業は何かの理由で1回か2回くらいはやりなおす可能性も 多いと思うので,一発で終わるとは思わずにそんなようなつもりでやってみて ください.(VPSなど契約してそっちでやるととてもラクでおすすめです)

変更履歴は以下です.

以下は旧版です.いちおう配布しますが,とくに理由無ければこのページの一番上の 最新版を利用してください.
メールは kozos(アットマーク)kozos.jp まで