ダウンロード
              (2025年9月3日更新)
本書のサンプルプログラムは、下記のGitHubで公開しています。
	- https://github.com/PG-MANA/MiniVisor
 
使用する際はリポジトリをクローンしてください。詳しくは第1章で解説しています。
            
            
              お詫びと訂正(正誤表)
              本書の以下の部分に誤りがありました。ここに訂正するとともに、ご迷惑をおかけしたことを深くお詫び申し上げます。
(2025年10月14日最終更新)
P.212 リスト8.1(つづき)の4行目
	| 誤 | 
		if let Some(p_int_id) = physical_int_id {
    entry |= ICH_LRN_EL2_HW | ((p_int_id as u64) << 32);
}
  | 
	
	| 正 | 
		if let Some(p_int_id) = physical_int_id {
    entry |= ICH_LRN_EL2_HW | ((p_int_id as u64) << 32);
} else {
    entry |= ICH_LRN_EL2_EOI;
}
  | 
	
※サンプルプログラムは修正済み
P.20 本文6行目
	| 誤 | 
		読み込み専用のものあります | 
	
	| 正 | 
		読み込み専用のものもあります | 
	
P.44 本文下から1行目
	| 誤 | 
		read_reg_propaty | 
	
	| 正 | 
		read_reg_property | 
	
P.51 本文下から9行目
P.94 リスト3.23の10行目と本文下から3行目
※サンプルプログラムは修正済み
P.94 リスト3.23の11行目と本文下から3行目
※サンプルプログラムは修正済み
P.95 図3.21のキャプション
P.128 リスト5.1の4行目、6行目、13行目
※サンプルプログラムは修正済み
P.134 リスト5.4の3行目
	| 誤 | 
		let register_offset = int_id & (u32::BITS / 2 - 1);
  | 
	
	| 正 | 
		let register_offset = (int_id & (u32::BITS / 2 - 1)) * 2;
  | 
	
※サンプルプログラムは修正済み
P.137 リスト5.8の2行目と11行目
※サンプルプログラムは修正済み
P.138 リスト5.8(つづき)の7行目
※サンプルプログラムは修正済み
P.142 リスト5.12(つづき)の10行目
※サンプルプログラムは修正済み
P.146 本文下から12行目
	| 誤 | 
		interrupt_number[0] | 
	
	| 正 | 
		interrupts[0] | 
	
P.146 本文下から4行目
	| 誤 | 
		interrupt_number[1] | 
	
	| 正 | 
		interrupts[1] | 
	
P.146 本文下から3行目
	| 誤 | 
		interrupt_number[2] | 
	
	| 正 | 
		interrupts[2] | 
	
P.157 本文8行目
P.164 本文5行目
	| 誤 | 
		次のdataというメンバが入ります。 | 
	
	| 正 | 
		次にdataというメンバがあります。 | 
	
P.181 リスト6.31の13行目
	| 誤 | 
		length -= (file_info.file_size as usize) - offset;
  | 
	
	| 正 | 
		length = (file_info.file_size as usize) - offset;
  | 
	
※サンプルプログラムは修正済み
P.199 本文下から8行目
P.201 本文3行目
P.202 本文5行目
P.202 本文下から4行目
	| 誤 | 
		これでscripts/virt/dtsを | 
	
	| 正 | 
		これでscripts/virt/dtsが | 
	
P.212 本文11行目
	| 誤 | 
		割り込みの処理が終えると | 
	
	| 正 | 
		割り込みの処理が終わると | 
	
P.219 本文下から4行目
	| 誤 | 
		src/interrupt.rs | 
	
	| 正 | 
		src/exception.rs | 
	
P.246 本文下から4行目
	| 誤 | 
		もう一つの方法はPSCIは | 
	
	| 正 | 
		もう一つの方法のPSCIは | 
	
P.97 リスト3.25 _map_address_stage2 関数(先頭部分) 中
	| 誤 | 
		descriptor.set_shareability(Shareability::InterShareable);
  | 
	
	| 正 | 
		descriptor.set_shareability(Shareability::InnerShareable);
  | 
	
※サンプルプログラムは修正済み
P.99 リスト3.26 _map_address_stage2関数(続き) 中
※サンプルプログラムは修正済み
P.99 リスト3.26 _map_address_stage2関数(続き) 中
	| 誤 | 
		descriptor.set_shareability(Shareability::InterShareable);
  | 
	
	| 正 | 
		descriptor.set_shareability(Shareability::InnerShareable);
  | 
	
※サンプルプログラムは修正済み