nand2tetris software toolsを使う
コンピュータシステムの理論と実装を読むにあたって、 nand2tetris software tools を準備する必要があった時のメモです。
環境
M1 - macOS Montereyでのセットアップになります。
% sw_vers
ProductName: macOS
ProductVersion: 12.4
BuildVersion: 21F79
javaが必要ですが、最近使っているMac miniには入っていなかったのでインストールします。
バージョン管理する予定はないですが、とりあえずanyenv
でjenv
を入れます。
anyenv
のバージョンは以下の通りです。
% anyenv --version
anyenv 1.1.4
javaを入れる。
jenvを入れる。
% anyenv install jenv
openjdkを入れる
jenv
は他の*env
系と違ってinstallコマンドはありません。
brew
等でインストールした上で、jenv add
を使用し、登録する形です。
とりあえず最新を入れます。
% brew install openjdk
jenv 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.1
jenv 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"' >> ~/.zshrc
jenv 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