SESCシミュレータは、実行するプログラムとして、
MIPS用Linux OSの実行可能バイナリファイル(ELFフォーマットファイル)を
入力することを想定しているため、
本クロスコンパイラは基本的にはLinux用のコンパイラと同様のものと
なっている。
※tar.bz2ファイル名は GitHubからのファイルの取得を行った場所によって 異なるので適宜変更すること。tar xvfj ~/SESC/bindist/sesc-tools-cygwin64-20190702.tar.bz2 -C /usr/local
export PATH=/usr/local/sesc-tools/bin:$PATH
作業を省力化するため、
このファイル(setup-sesc.sh)を
作業ディレクトリにコピー後、以下のコマンドを実行しても良い。
※あるいは、.bashrc (通常は /homeの下のユーザ毎に作成されている ディレクトリ直下にある)に 上記のPATH設定を記述しておくと、 コマンドラインシェル(bash)の起動時に自動的に設定を行ってくれる。. setup-sesc.sh # ←ピリオドに続けて空白の後にファイル名
※cygwin環境自体の使い方については
Google等で検索。
本演習では、C言語のソースプログラムしかコンパイルしないので、
mipsel-linux-gccのみを使用する。
# Cソースファイルから実行可能バイナリファイルを生成 mipsel-linux-gcc -O ファイル名.c -static -Tmint.x -o ファイル名.bin # 実行可能バイナリファイルを逆アセンブル mipsel-linux-objdump -d ファイル名.bin > ファイル名.asm
逆アセンブルファイルについて、上記の方法ではレジスタ名がソフトウェア
レジスタ名となり、具体的なレジスタ番号が分かりにくい。
以下の通りに、"-M reg-names=numeric" オプションを
付けることで、(物理)レジスタ番号で表示してくれる。
# 実行可能バイナリファイルを逆アセンブル (物理レジスタ番号で表示) mipsel-linux-objdump -M reg-names=numeric -d ファイル名.bin > ファイル名.asm