cygwin環境(windowsで動くUNIX模倣環境)で
動作するため、(cygwinが導入してあれば)
2Fネットワーク実験室以外の環境でも利用可能である。
Cソースプログラム(.cファイル)やMIPSアセンブリソースプログラム(.Sファイル)を
mipsel-elf-gccによりコンパイルおよびアセンブルを行い、
(リロケータブル)オブジェクトファイル(.oファイル)を生成する。
オブジェクトファイル(.oファイル)を
mipsel-elf-ldによりランタイムライブラリ等とリンクして、
実行可能バイナリコードファイル(ELF形式ファイル)を生成する。
シミュレータで読み込み可能な形式(モトローラSレコード形式)の
ダンプテキストファイル(.srecファイル)に変換するために
mipsel-elf-objcopyを使用する。
また、デバッグを行う際に参考になる逆アセンブルリスト(.asmファイル)を
生成するために
mipsel-elf-objdumpを使用する。
export PATH=/usr/local/mips-tools/bin:$PATH
作業を省力化するため、
このファイル(setup-mips.sh)を
作業ディレクトリにコピー後、以下のコマンドを実行しても良い。
※あるいは、.bashrc(Z:の直下にあるファイルの一つ)に上記のPATH設定を記述 しておくと、コマンドラインシェル(bash)の起動時に自動的に設定を行ってくれる。. setup-mips.sh # ←ピリオドに続けて空白の後にファイル名
次に作業ディレクトリに
このファイル(mipsy.ld)をダウンロードして置く。
この作業は最初に一度だけ行えばよい。
(新しく作業ディレクトリを作った場合は、同様にダウンロードしてファイルを置く)
補足:
サービスコールの記述を簡略化するためのマクロを定義したヘッダファイル
mipsy.h
を使う場合は、これも作業ディレクトリに
置くこと。
# Cソースファイルからオブジェクトファイルを生成 mipsel-elf-gcc -O {ファイル名}.c -c # オブジェクトファイルをリンクして実行可能バイナリファイルを生成 mipsel-elf-ld {ファイル名}.o -Tmipsy.ld -o {ファイル名}.bin # 実行可能バイナリファイルをシミュレータに読み込み可能な形式に変換 mipsel-elf-objcopy -Osrec {ファイル名}.bin {ファイル名}.srec # 実行可能バイナリファイルを逆アセンブル mipsel-elf-objdump -d {ファイル名}.bin > {ファイル名}.asm
シミュレータに入力するプログラムファイルは.srecファイル
を使用する。
また、逆アセンブルファイルである.asmファイル
はデバッグ作業の際に
有用な情報が含まれている。
逆アセンブルファイルについて、上記の方法ではレジスタ名がソフトウェア
レジスタ名となり、シミュレータのデバッグ作業の際に使いづらい。
以下の通りに、"-M reg-names=numeric" オプションを
付けることで、(物理)レジスタ番号で表示してくれる。
# 実行可能バイナリファイルを逆アセンブル (物理レジスタ番号で表示) mipsel-elf-objdump -M reg-names=numeric -d {ファイル名}.bin > {ファイル名}.asm
本クロス環境を導入する前に cygwin環境を整えておく必要がある。
cygwinについてはここから
ダウンロードできる。
(基本的にはsetup.exeを実行して表示される指示に従うだけでOK)
cygwinの環境が整えた後、cygwinのシェル(bash)から以下のコマンドを
実行して、
上記のファイル(mips-tools.tar.bz2)を展開するだけでクロス環境の導入は
完了である。
tar xvfj mips-tools.tar.bz2 -C /usr/local
※cygwin環境自体の使い方については
Google等で検索するとよい。