Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/msyksphinz-self/support_ca_llvm_book
https://github.com/msyksphinz-self/support_ca_llvm_book
Last synced: 4 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/msyksphinz-self/support_ca_llvm_book
- Owner: msyksphinz-self
- Created: 2022-06-27T13:54:48.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-25T03:10:43.000Z (4 months ago)
- Last Synced: 2024-08-02T17:35:51.597Z (3 months ago)
- Language: Dockerfile
- Size: 2.77 MB
- Stars: 136
- Watchers: 8
- Forks: 6
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 「作って学ぶコンピュータアーキテクチャ」 サポートページ
こちらは、技術評論社より出版されている「作って学ぶコンピュータアーキテクチャ ー LLVMとRISC-Vによる低レイヤプログラミングの基礎」 のサポートページです。
- 作って学ぶコンピュータアーキテクチャ —— LLVMとRISC-Vによる低レイヤプログラミングの基礎
- 著者:木村優之
- 発行:技術評論社 2022年7月1日
- ISBN:978-4297129149## 本書の実装を含んだLLVMリポジトリ
書籍の解説ではLLVM実装の一部のみを抜粋して掲載しているため、ビルドおよびテストを行いたい場合、
以下のLLVMブランチで完全なソースコードを参照していただきますよう、お願いいたします。本書でサポートしているのは以下の`llvm-myriscvx120`ブランチです。
https://github.com/msyksphinz-self/llvm-project/tree/llvm-myriscvx120
### 実行方法
```sh
git clone https://github.com/msyksphinz-self/llvm-project.git -b llvm-myriscvx120
```LLVM13ベース、LLVM14ベースでもビルド・テストの成功は確認しています。ただし本文で解説しているコードと若干異なる場所があるのでご注意ください。
```sh
## LLVM13ベースでの開発ブランチ
git clone https://github.com/msyksphinz-self/llvm-project.git -b llvm-myriscvx130## LLVM14ベースでの開発ブランチ
git clone https://github.com/msyksphinz-self/llvm-project.git -b llvm-myriscvx140
```- [LLVM15をベースとしたブランチについて](llvm15.md)
## 本書のLLVMビルドブランチと対応するプロジェクトのリビジョン
LLVM12で確認を行っています。LLVM13、LLVM14でも同様のコミットメッセージでブランチを構築しています。
[本書で使用しているリポジトリのリビジョン](book_revision.md)
## 本書で使用しているテストプログラムのリポジトリ
本リポジトリを使ったビルドの確認方法は、READMEを参照してください。
https://github.com/msyksphinz-self/llvm-myriscvx-tests
## 本書の環境を含んだDockerコンテナ
[本書の環境を含んだDockerコンテナ](docker/README.md)をリリースします。
## LLVMビルド時の推奨オプション
本文では記載抜けしていましたが、RISC-Vビルドでの各種ライブラリ(`printf()`など)を扱うために`-DDEFAULT_SYSROOT=`オプションを適切に設定することが推奨されます。具体的には、以下のように`-DDEFAULT_SYSROOT`オプションを追加して、P.70にてツールチェインのインストール場所として使用している` ${HOME}/riscv64_github`を適宜読み替えてください。
なお、P.96のx86(ホスト)用にビルドする際は`DEFAULT_SYSROOT`の設定は不要です。
```sh
cmake -G Ninja \
-DDEFAULT_SYSROOT=${HOME}/riscv_github/riscv64-unknown-elf \ # RISC-V向けビルド時。ここの部分
-DCMAKE_BUILD_TYPE="Debug" \
-DLLVM_TARGETS_TO_BUILD="X86;AArch64;RISCV;MYRISCVX" \
-DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" \
../llvm
```## 正誤表
[正誤表](errata.md)はこちらに移動しました。
## 付録PDF
- [付録1. 関数呼び出しのバリエーションと高度な機能](appendix/advanced_func.pdf)
- [付録2. 浮動小数点命令](appendix/fpu.pdf)## 書籍に入り切らなかったあとがき
[あとがき](others.md)
## macOSでのビルド方法補足
macOSにおいてLLVMリポジトリをビルドする際、`SYSROOT`に設定しているCommand Line Tools for Xcodeのインストールが必要です。
```sh
$ xcode-select --install
```また、本書に記載しているビルドコマンドを、以下のように置き換えることが推奨されます。`DEFAULT_SYSROOT`のオプションはXCodeのインストール先に応じて適宜変更してください。
- ホスト(非RISC-V)向けビルド時 (P.96)のコマンド実行時
```sh
cmake -G Ninja \
-DCMAKE_OSX_ARCHITECTURES='arm64' \ # M1 Macの場合は本オプションを追加してください
-DDEFAULT_SYSROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/ \
-DCMAKE_BUILD_TYPE="Debug" \
-DLLVM_TARGETS_TO_BUILD="host;AArch64;RISCV;MYRISCVX" \ # 本書ではx86としていますが、M1 Macの場合は"host"としてください
-DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" \
../llvm
```- RISC-V向けビルド実行時
```sh
cmake -G Ninja \
-DCMAKE_OSX_ARCHITECTURES='arm64' \ # M1 Macの場合は本オプションを追加してください
-DDEFAULT_SYSROOT=${HOME}/riscv_github/riscv64-unknown-elf \
-DCMAKE_BUILD_TYPE="Debug" \
-DLLVM_TARGETS_TO_BUILD="host;AArch64;RISCV;MYRISCVX" \ # 本書ではx86としていますが、M1 Macの場合は"host"としてください
-DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" \
../llvm
```