作って学ぶコンピュータアーキテクチャ
——LLVMRISC-Vによる低レイヤプログラミングの基礎

書籍の概要

この本の概要

コンピュータアーキテクチャ,とくにCPUの命令セットアーキテクチャについて,RISC-Vを例に「上のレイヤからアプローチする」ことで理解を深めることを目的とした一冊。本書を一通り読み終えるころには,低レイヤに対する一段上の実力がついているはずです!

こんな方におすすめ

  • 性能向上などのためにコンピュータアーキテクチャを理解したいエンジニア
  • RISC-VやLLVMへの理解を深めたいエンジニア

この書籍に関連する記事があります!

「低レイヤ」を,なぜ・どうやって学ぶのか
コンピュータアーキテクチャ,とくにCPUの命令セットアーキテクチャについて,RISC-Vを例に「上のレイヤからアプローチする」ことで理解を深めることを目的とした一冊。本書を一通り読み終えるころには,低レイヤに対する一段上の実力がついているはずです!

目次

第1章:コンピュータアーキテクチャとISAの基礎知識

  • コンピュータアーキテクチャの全体像
  • 命令セットアーキテクチャ(ISA)
  • CPUの高速化技法

第2章:RISC-Vの基礎知識

  • RISC-V命令セットの特徴
  • RISC-V命令セットの詳細
  • RISC-Vを体験する

第3章:LLVMの基礎知識

  • LLVMの概要
  • LLVMを体験する

第4章:LLVMバックエンドの仕組み

  • LLVMバックエンド開発の全体像
  • LLVMのバックエンドを作るための第一歩
  • ターゲット記述ファイル(tdファイル)の作成
  • MYRISCVXのC++クラスを実装する
  • llcはどのようにマルチターゲットを実現しているのか

第5章:簡単な関数や演算のサポート

  • 関数の仕組み
  • シンプルな関数をコンパイルできるようにする
  • 関数が戻り値を返せるようにする
  • 関数のプロローグ・エピローグに必要な新規命令の実装
  • 関数のプロローグ・エピローグの実装

第6章:算術演算・グローバル変数・ポインタ・制御構文のサポート

  • 算術・論理・比較命令の生成
  • まとめとレッスン:画像のパタンマッチングを行うプログラムをシミュレーションする
  • グローバル変数のサポート
  • ポインタ・配列・構造体のサポート
  • 条件分岐や繰り返しの生成
  • 関数呼び出しのサポート
  • [LLVM] LLVMのビルドと確認
  • まとめとレッスン:配列のソート

第7章:オブジェクトファイル・ELFファイル出力のサポート

  • オブジェクトファイルとは何なのか
  • インラインアセンブリとllvm-mcの実装
  • まとめとレッスン:N-Queen問題を解く

第8章:LLVMでのテスト記述とリグレッション

  • llvm-litによるテスト実行

著者プロフィール

木村優之(きむらまさゆき)

半導体メーカー勤務のかたわら,趣味の技術ブログで主にRISC-Vについて試行錯誤した結果をブログ化している。RISC-Vを含め低レイヤの技術全般に興味がある。