nand2tetris software toolsを使う
コンピュータシステムの理論と実装を読むにあたって、 nand2tetris software tools 1 を準備する必要があった時のメモです。
環境
M1 - macOS Montereyでのセットアップになります。
% sw_vers
ProductName: macOS
ProductVersion: 12.4
BuildVersion: 21F79
javaが必要ですが、最近使っているMac miniには入っていなかったのでインストールします。
バージョン管理する予定はないですが、とりあえずanyenvでjenv 2 を入れます。
anyenvのバージョンは以下の通りです。
% anyenv --version
anyenv 1.1.4javaを入れる。
jenvを入れる。
% anyenv install jenvopenjdkを入れる
jenvは他の*env系と違ってinstallコマンドはありません。
brew等でインストールした上で、jenv addを使用し、登録する形です。
とりあえず最新を入れます。
% brew install openjdkjenv add
jenv add PATH_TO_JVM_HOMEで登録します。
PATH_TO_JVM_HOMEはjenvのREADMEとhomebrewのページを参考にしました。
% jenv add /opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home
openjdk64-18.0.1.1 added
18.0.1.1 added
18.0 added
18.0.1.1 already present, skip installation
#1.2 Adding Your Java Environment | jenv | GitHub
jenv versions
javaがしっかりと追加されたことを確認します。
% jenv versions
* system (set by /Users/kosh/.anyenv/envs/jenv/version)
18.0
18.0.1.1
openjdk64-18.0.1.1jenv global/local
あとは、他の*env系と同様にlocalまたはglobalで使用するバージョンを指定します。
java -versionでしっかり導入できていることを確認します。
% jenv global 18.0
% exec $SHELL -l
% java -version
openjdk version "18.0.1.1" 2022-04-22
OpenJDK Runtime Environment Homebrew (build 18.0.1.1+0)
OpenJDK 64-Bit Server VM Homebrew (build 18.0.1.1+0, mixed mode, sharing)
local 登録のチェックはおまけに記載します。[*1]
nand2tetris software tools
Software | From Nand to Tetris
Downloadからソフトウェアをダウンロードします。
Macユーザー向けのガイドもダウンロードすることができます。
ダウンロードしたディレクトリ内の*.shを確認します。
% tree nand2tetris/tools -P "*.sh" --prune
nand2tetris/tools
├── Assembler.sh
├── CPUEmulator.sh
├── HardwareSimulator.sh
├── JackCompiler.sh
├── TextComparer.sh
└── VMEmulator.sh
0 directories, 6 files
実行権限がないのでとりあえず与えます。
[~/nand2tetris/tools]
% find ./ -name "*.sh" | xargs chmod 755
これでHardwareSimulator.shでシミュレータが起動します。
使いやすく
本の中やガイドではシンボリックリンクの方法が記載されていますが、思いっきり.zshrcにPATHとして登録してしまう方法もあります。
export PATH=$PATH:<your-path>/nand2tetris/toolsおまけ
jenvの設定は?
homebrewとかで直接jenvを入れた場合は.zshrcなどにいくつか記載が必要ですが、anyenvで入れた場合はanyenvの設定ですべてカバーされます。
jenvを使わないでjavaを使う
jenvを使わないで、普通にjavaを使う場合はシンボリックリンクを作るか、pathを指定してあげる必要があります。
シンボリックリンク
シンボリックリンクの作成はhomebrewのopenjdkのページに記載があります。 openjdk | Homebrew Formulae
PATH
PATHに関してはinstallした際の注釈に記載がありました。
If you need to have openjdk first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ~/.zshrcjenv local
適当に17を入れ、jenv addで登録します。
% brew install openjdk@17
% jenv add /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk/Contents/Home
openjdk64-17.0.3 added
17.0.3 added
17.0 added
17.0.3 already present, skip installation
% jenv versions
system
17.0
17.0.3
* 18.0 (set by /Users/kosh/.anyenv/envs/jenv/version)
18.0.1.1
openjdk64-17.0.3
openjdk64-18.0.1.1
適当なディレクトリで17を指定してみます。
.java-versionが作成され、しっかりバージョンが切り替わっていることが確認できます。
% jenv local 17.0
% java -version
openjdk version "17.0.3" 2022-04-19
OpenJDK Runtime Environment Homebrew (build 17.0.3+0)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.3+0, mixed mode, sharing)
% cat .java-version
17.0