MIPSアーキテクチャ用クロスコンパイラ/アセンブラ環境


概要

MIPSシミュレータで実行可能なプログラムファイルを作成するための クロスコンパイラおよびアセンブラである。
GCC (GNU Compiler Collection)をベースとしており、C言語や MIPSアセンブリ言語で記述されたプログラムソースコードをコンパイル およびアセンブルすることができる。

newlibをベースとした標準Cライブラリ(libc)を使用可能であり、 それらを使用して記述されたCソースコードをコンパイルすることができる。
※ただし、現時点ではライブラリを使うために必要なシステムコールを シミュレータ側に実装していないため、実行はできない。(将来対応予定)

cygwin環境(windowsで動くUNIX模倣環境)で 動作するため、(cygwinが導入してあれば) 2Fネットワーク実験室以外の環境でも利用可能である。

構成

クロスコンパイル/アセンブラ環境は以下のプログラムにより構成される。
※mipsel-elf-gccでアセンブリソースコードをアセンブルできるので、 通常は mipsel-elf-asを直接使うことはない。

Cソースプログラム(.cファイル)やMIPSアセンブリソースプログラム(.Sファイル)を mipsel-elf-gccによりコンパイルおよびアセンブルを行い、 (リロケータブル)オブジェクトファイル(.oファイル)を生成する。
オブジェクトファイル(.oファイル)を mipsel-elf-ldによりランタイムライブラリ等とリンクして、 実行可能バイナリコードファイル(ELF形式ファイル)を生成する。

シミュレータで読み込み可能な形式(モトローラSレコード形式)の ダンプテキストファイル(.srecファイル)に変換するために mipsel-elf-objcopyを使用する。
また、デバッグを行う際に参考になる逆アセンブルリスト(.asmファイル)を 生成するために mipsel-elf-objdumpを使用する。

開発フロー

使用前の設定

本クロス環境を使う前にcygwinのコマンドラインシェル(bash)で以下のコマンドを 実行する。
※シェル(bash)を終了すると設定内容が失われるため、 この操作は新規にシェルを起動するごとに行うこと。

export PATH=/usr/local/mips-tools/bin:$PATH

作業を省力化するため、 このファイル(setup.sh)を 作業ディレクトリにコピー後、以下のコマンドを実行しても良い。

. setup.sh   # ←ピリオドに続けて空白の後にファイル名
※あるいは、.bashrc(Z:の直下にあるファイルの一つ)に上記のPATH設定を記述 しておくと、コマンドラインシェル(bash)の起動時に自動的に設定を行ってくれる。

次に作業ディレクトリに このファイル(mipsy.ld)をダウンロードして置く。 この作業は最初に一度だけ行えばよい。
(新しく作業ディレクトリを作った場合は、同様にダウンロードしてファイルを置く)

補足:
サービスコールの記述を簡略化するためのマクロを定義したヘッダファイル mipsy.hを使う場合は、これも作業ディレクトリに 置くこと。

使い方

cygwinのシェル(bash)から以下のコマンドを実行する。
# 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

自分のPC環境で使いたい人向け情報

MIPSクロスコンパイラ/アセンブラ環境をまとめたものを ここ(23.5MB)に置いておくので、自由に利用して構わない。

本クロス環境を導入する前に cygwin環境を整えておく必要がある。
cygwinについてはここから ダウンロードできる。
(基本的にはsetup.exeを実行して表示される指示に従うだけでOK)

cygwinの環境が整えた後、cygwinのシェル(bash)から以下のコマンドを 実行して、 上記のファイル(mips-tools.tar.bz2)を展開するだけでクロス環境の導入は 完了である。

tar xvfj mips-tools.tar.bz2 -C /usr/local

※cygwin環境自体の使い方については Google等で検索するとよい。


文責:大津