この記事の対象者
- Mac環境で、IPA提供シミュレータで、CASLIIの「テストファイル」を動かしたい人
概要
基本情報技術者試験(FE)の午後試験としてアセンブリ言語の1種「CASLII」の勉強をしようと思いました。
CASLIIを動かせるシミュレータをIPA※からダウンロードしました。
私はMacを使用していますが、IPAからダウンロードしたフォルダの中には「Windows環境の取扱説明書」しかありません。
Macだとどう動かせばいいんだ。。。せっかくダウンロードしたし動かしたい。
いろいろ試して、とりあえずmac環境下でも「テストファイル」が動いたのでここに記載します。
※IPA…独立行政法人情報処理推進機構
→ https://www.ipa.go.jp/
注意
この記事のメインはあくまでも、**「Mac環境で、IPA提供のCASLIIテストファイルを、IPA提供のシミュレータで動かす」**です。
- それ以外のファイル、例えば、自分で作成した.casファイルを動かしたい人は、「テストファイルじゃなくて、普通の.casファイルを実行したいんだけど」を見てください!
- いや、そもそもIPAのシミュレーター以外に使えるものないの?って方は、「いや、ターミナルでいちいちめんどくさいわ!」を見てください!
私の環境
- macOS Big Sur バージョン11.4
- OpenJDK 15.0.2
- 今回ダウンロードしたCASLIIシミュレータのバージョンは ver2.0
IPA提供のシミュレータを使って、IPA提供の「テストファイル」を実行するまでのステップ
- Javaをダウンロード&インストールする
- IPAからシミュレータをダウンロード&解凍
-
アセンブラバッチファイル(CASL2.bat)、実行バッチファイル(RUN.bat)の編集
- 拡張子の変更
- パスの変更とターミナルの指定
- 拡張子を変更したファイルのパーミッションの変更
- テストファイルsmain.cas、count1.casのアセンブル
- テストファイルsmain.casの実行
以上です。
以下で1つ1つ説明します。
1. Javaをダウンロード&インストールする
IPAが提供しているシミュレータはJavaでアセンブルと実行をしてくれるのでJavaの環境が必要です。
なのでJavaをインストールします。
以下からインストールできます。
その後、ターミナル上で
java -version
のコマンドを打って、ちゃんと入ったかわかります。
(参考)私のやつ↓
MacBook-Pro ~ % java -version
openjdk version "15.0.2" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 15.0.2+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 15.0.2+7, mixed mode, sharing)
2. IPAからシミュレータをダウンロード&解凍
以下からダウンロードできます。
https://www.jitec.ipa.go.jp/1_20casl2/casl2dl_001.html
ダウンロードして解凍すると以下のような中身になっています。
(Manual.pdf抜粋)
3. アセンブラバッチファイル(CASL2.bat)、実行バッチファイル(RUN.bat)の編集
CASL2.bat、RUN.batはMac環境では動きません。
Mac環境で、.batファイルと同じようなものは、.shのファイルのため.shファイルを作成します。
(バッチファイル(英: batch file)とは、MS-DOS、OS/2、Windowsでのコマンドプロンプト(シェル)に実行させたい命令列をテキストファイルに記述したもの。バッチファイルを実行すると、シェルプログラム(一般にCOMMAND.COMやcmd.exe)がそのファイルを読み、その中のコマンドを(通常)一行ずつ実行する。バッチファイルはUNIX系オペレーティングシステムのシェルスクリプトに相当する。(wikipedia抜粋))
そのため、以下の処理をしていきます。
1.拡張子の変更
- アセンブラバッチファイル: CASL2.bat → CASL2.sh
- 実行バッチファイル: RUN.bat → RUN.sh
2. シェルの記述の変更
とありますが、
Macで動かす方は以下3つやってください。
- 各スクリプトを実行するのに使用するシェルを、それぞれのファイルの1行目に書いてください。(私はzshなので、#!/bin/zsh)
- 二行目に 「java -jar [それぞれのファイルがある場所] %1 %2 %3 %4 %5」
- %1 %2 %3 %4 %5 の「%」を全部「$」に変更
【参考】わたしのやつ↓
# !/bin/zsh
java -jar /Users/misuzz/projects/javaCASL2_2.0/casl2.jar $1 $2 $3 $4
# !/bin/zsh
java -jar /Users/misuzu/projects/javaCASL2_2.0/run.jar $1 $2 $3 $4
3. 拡張子を変更したファイルのパーミッションの変更
今のままだと、2種類の.shファイルは実行権限がないので、
以下の通りターミナルでコマンドを打って、パーミッションを変えてください。
【パーミッション変更前】↓
MacBook-Pro TestProgram % ls -l
-rw-r--r-- 1 misuzz staff 79 6 19 16:16 CASL2.sh
-rw-r--r-- 1 misuzu staff 77 6 19 16:17 RUN.sh
【パーミッション変更後】↓
MacBook-Pro TestProgram % chmod 764 CASL2.sh
MacBook-Pro TestProgram % chmod 764 RUN.sh
MacBook-Pro TestProgram % ls -l
-rwxrw-r-- 1 misuzu staff 79 6 19 16:16 CASL2.sh
-rwxrw-r-- 1 misuzu staff 77 6 19 16:17 RUN.sh
↑自分の実行権限(x)が増えました。
【参考】
※ls -l…カレントディレクトリ内の中身の詳細を一覧表示するコマンド
※chmod…ファイルのパーミッションを変更するコマンド
4. テストファイルsmain.cas、count1.casのアセンブル
上記項番3で.shファイルを作成したので、以下のコマンドをターミナルに打って、テストファイルをそれぞれアセンブルしてください。
MacBook-Pro TestProgram % ./CASL2.sh smain.cas
MacBook-Pro TestProgram % ./CASL2.sh count1.cas
【参考】実行結果↓
MacBook-Pro TestProgram % ./CASL2.sh smain.cas
CASLⅡ Assembler -V2.00(2005/05/27)- ( Date : 2021/6/19 )
Label:COUNT1 Def:external. Ref: 6
オブジェクトプログラムを smain.obj へ出力しました。
END CASLⅡ Assembler.
MacBook-Pro TestProgram % ./CASL2.sh count1.cas
CASLⅡ Assembler -V2.00(2005/05/27)- ( Date : 2021/6/19 )
オブジェクトプログラムを count1.obj へ出力しました。
END CASLⅡ Assembler.
これで.objファイルができたので次で実行できます!
5. テストファイルsmain.casの実行
以下のコマンドで実行してください!
MacBook-Pro TestProgram % ./RUN.sh smain.obj
【参考】実行結果↓
MacBook-Pro TestProgram % ./RUN.sh smain.obj
COMETⅡ Emulator -V2.00(2005/05/27)- ( Date : 2021/6/19 )
* *Result* * PR:0004 [ DREG ] FR:0(OF:0 SF:0 ZF:0) SP:F000
GR0:0004 GR1:1111 GR2:0000 GR3:0000 GR4:0000 GR5:0000 GR6:0000 GR7:0000
END COMETⅡ Emulator.
以上です!!
(ごめんなさい、中身の意味は今勉強中なのでわかんないです、、、)
テストファイルじゃなくて、普通の.casファイルを実行したいんだけど
そんな方は、今までご紹介した処理は別に必要ないです。
IPAから取ってきたら、以下のコマンドで実行できます。
例えば、"Hello,World"と出てくるhello.casファイル新規作成して、実行します。
(JavaCASL2(IPA公式(?)のCASL IIシミュレータ)クイックガイド for Linux (Ubuntu 10.04) and Windows XP よりお借りしました。)
; hello.cas
MAIN START
OUT MSG,LEN
RET
MSG DC 'hello, world'
LEN DC 12
END
コンパイルします↓
java -jar casl2.jar hello.cas
これでhello.objファイルができるので、以下コマンドで実行してください。
java -jar run.jar hello.obj
【参考】実行結果↓
MacBook-Pro javaCASL2_2.0 % java -jar run.jar TestProgram/hello.obj
COMETⅡ Emulator -V2.00(2005/05/27)- ( Date : 2021/6/16 )
hello, world
END COMETⅡ Emulator.
以上です!
いや、ターミナルでいちいちめんどくさいわ!
っていう効率重視の方は、こちらもあるのでお使いください。
CASLシミュレータ (CASL II 対応)
即アセンブルしてくれるし、汎用レジスタに何入ってるか表示してくれるし、楽です。
私の宿題
- .batファイルにあった「%1 %2 %3 %4」の意味がわからない。smain.casとcount1.casのファイルをつなぐためかなんかの指示を出してそう、と予想してます。
- .shファイルを実行したけど、書き方が分かれば、.shファイルを作らずに、
java -jar casl2.jar $1 $2 $3 $4 smain.cas
みたいな感じのコマンドで実行できるのかもしれない。言語上できないかもしれない。 - そもそもテストファイルの中身ってなにしてたんだろう。(今後勉強していくので、今後わかるようになると信じてます)
以上です!
ここまで読んでいただきありがとうございます。
ツッコミありましたらお願いします。