LoginSignup
2
3

More than 1 year has passed since last update.

Mac環境で、IPA提供シミュレータを使って、アセンブリ言語「CASLII」の「テストファイル」を動かした話

Last updated at Posted at 2021-06-21

この記事の対象者

  • Mac環境で、IPA提供シミュレータで、CASLIIの「テストファイル」を動かしたい人

概要

基本情報技術者試験(FE)の午後試験としてアセンブリ言語の1種「CASLII」の勉強をしようと思いました。
CASLIIを動かせるシミュレータをIPA※からダウンロードしました。
私はMacを使用していますが、IPAからダウンロードしたフォルダの中には「Windows環境の取扱説明書」しかありません。
Macだとどう動かせばいいんだ。。。せっかくダウンロードしたし動かしたい。
いろいろ試して、とりあえずmac環境下でも「テストファイル」が動いたのでここに記載します。

※IPA…独立行政法人情報処理推進機構
→ https://www.ipa.go.jp/

注意

この記事のメインはあくまでも、「Mac環境で、IPA提供のCASLIIテストファイルを、IPA提供のシミュレータで動かす」です。

私の環境

  • macOS Big Sur バージョン11.4
  • OpenJDK 15.0.2
  • 今回ダウンロードしたCASLIIシミュレータのバージョンは ver2.0

IPA提供のシミュレータを使って、IPA提供の「テストファイル」を実行するまでのステップ

  1. Javaをダウンロード&インストールする
  2. IPAからシミュレータをダウンロード&解凍
  3. アセンブラバッチファイル(CASL2.bat)、実行バッチファイル(RUN.bat)の編集
    1. 拡張子の変更
    2. パスの変更とターミナルの指定
    3. 拡張子を変更したファイルのパーミッションの変更
  4. テストファイルsmain.cas、count1.casのアセンブル
  5. テストファイル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

ダウンロードして解凍すると以下のような中身になっています。
スクリーンショット 2021-06-20 9.36.08.png
(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. シェルの記述の変更

取説(Manual.pdf)には、
スクリーンショット 2021-06-19 18.12.19.png

とありますが、
Macで動かす方は以下3つやってください。

  1. 各スクリプトを実行するのに使用するシェルを、それぞれのファイルの1行目に書いてください。(私はzshなので、#!/bin/zsh)
  2. 二行目に 「java -jar [それぞれのファイルがある場所] %1 %2 %3 %4 %5」
  3. %1 %2 %3 %4 %5 の「%」を全部「$」に変更

 【参考】わたしのやつ↓

CASL2.sh
#!/bin/zsh
java -jar /Users/misuzz/projects/javaCASL2_2.0/casl2.jar $1 $2 $3 $4
RUN.sh
#!/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
; 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みたいな感じのコマンドで実行できるのかもしれない。言語上できないかもしれない。
  • そもそもテストファイルの中身ってなにしてたんだろう。(今後勉強していくので、今後わかるようになると信じてます)

以上です!

ここまで読んでいただきありがとうございます。
ツッコミありましたらお願いします。

参考記事

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3