Skip to content

Commit 802739e

Browse files
committed
Fix list numbering on part17
1 parent 9be159b commit 802739e

File tree

1 file changed

+16
-19
lines changed

1 file changed

+16
-19
lines changed

part17.md

+16-19
Original file line numberDiff line numberDiff line change
@@ -245,27 +245,24 @@ main(int argc, char** argv)
245245
}
246246
```
247247

248-
(1) ゲストマシンで実行するプログラムです。
249-
(2) ALレジスタに*(ASCIIコードで0x2a)をロード、DXレジスタにシリアルポートのデータレジスタのアドレスをロード、outbでALレジスタの内容をDXレジスタで指定したポートへ書き込み、を繰り返し行っています。
250-
(3) ここではプログラムのロード処理を省略するため、配列上にプログラムのHEXダンプを持ってきています。
251-
(4) vm_create()でvmm.koへsysctlを発行し、VMインスタンスを作成します。
248+
(1) ゲストマシンで実行するプログラムです。ALレジスタに*(ASCIIコードで0x2a)をロード、DXレジスタにシリアルポートのデータレジスタのアドレスをロード、outbでALレジスタの内容をDXレジスタで指定したポートへ書き込み、を繰り返し行っています。ここではプログラムのロード処理を省略するため、配列上にプログラムのHEXダンプを持ってきています。
249+
(2) vm_create()でvmm.koへsysctlを発行し、VMインスタンスを作成します。
252250
作成したインスタンスは/dev/vmm/<VM名>で表され、ioctlで制御できます。
253-
(5) vm_setup_memory()でゲストマシンのメモリサイズを指定し、/dev/vmm/<VM名>をmmapしてプロセスのメモリ空間へゲストメモリ空間をマップしています。
254-
(6) vm_map_gpa()でゲストメモリ空間へのポインタを取得しています。
251+
(3) vm_setup_memory()でゲストマシンのメモリサイズを指定し、/dev/vmm/<VM名>をmmapしてプロセスのメモリ空間へゲストメモリ空間をマップしています。
252+
(4) vm_map_gpa()でゲストメモリ空間へのポインタを取得しています。
255253
ゲストメモリ空間上のアドレスは引数で指定しています(ここではADDR_PT4 = 2000h)。
256-
vm_map_gpa() では渡されたアドレスをオフセットとしてポインタを計算します。
257-
(7) ここでは、ページテーブル(pt4,pt3,pt2)、GDT、プログラム領域(entry)のアドレスを指定してそれぞれのポインタを取得しています。
258-
(8) ゲストメモリ空間上のページテーブルを初期化しています。
259-
(9) ゲストメモリ空間上の初期化しています。
260-
(10) ゲストメモリ空間へ(1)で記述したプログラムをコピーしています。
261-
(11) 各セグメントレジスタを初期化してます。
262-
(12) GDTRに作成したGDTのアドレスをセットしてます。
263-
(13) CR0レジスタにプロテクテッドモード有効、ページング有効などのビットを設定しています。
264-
(14) CR3レジスタに作成したページテーブルのアドレスを設定しています。
265-
(15) CR4レジスタにPAE有効化などのビットを設定しています。
266-
(16) EFERレジスタに64bit有効化などのビットを設定しています。
267-
(17) RSPレジスタにスタックアドレスの初期値を設定しています。
268-
(18) RIPレジスタにロードしたプログラムのアドレスを設定しています。
254+
vm_map_gpa() では渡されたアドレスをオフセットとしてポインタを計算します。ここでは、ページテーブル(pt4,pt3,pt2)、GDT、プログラム領域(entry)のアドレスを指定してそれぞれのポインタを取得しています。
255+
(5) ゲストメモリ空間上のページテーブルを初期化しています。
256+
(6) ゲストメモリ空間上の初期化しています。
257+
(7) ゲストメモリ空間へ(1)で記述したプログラムをコピーしています。
258+
(8) 各セグメントレジスタを初期化してます。
259+
(9) GDTRに作成したGDTのアドレスをセットしてます。
260+
(10) CR0レジスタにプロテクテッドモード有効、ページング有効などのビットを設定しています。
261+
(11) CR3レジスタに作成したページテーブルのアドレスを設定しています。
262+
(12) CR4レジスタにPAE有効化などのビットを設定しています。
263+
(13) EFERレジスタに64bit有効化などのビットを設定しています。
264+
(14) RSPレジスタにスタックアドレスの初期値を設定しています。
265+
(15) RIPレジスタにロードしたプログラムのアドレスを設定しています。
269266

270267
実行イメージ
271268
============

0 commit comments

Comments
 (0)