マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

エラーは続く

試しにTSS構造体を作り、GDTにセットしてltrを呼び出してみた結果qemuではエラーメッセージは変わらず

qemu: fatal: invalid tss type
のままだったけど、bochsだと
check_cs(0x1e97): not a valid code segment !
という出力がずっと続くようになった。途中で止めてセグメントレジスタの内容を確認すると

00024268304i[CPU ] | SEG sltr(index|ti|rpl) base limit G D
00024268304i[CPU ] | CS:0010( 0002| 0| 0) 00000000 000fffff 1 1
00024268304i[CPU ] | DS:0018( 0003| 0| 0) 00000000 000fffff 1 1
00024268304i[CPU ] | SS:0018( 0003| 0| 0) 00000000 000fffff 1 1
00024268304i[CPU ] | ES:0018( 0003| 0| 0) 00000000 000fffff 1 1
00024268304i[CPU ] | FS:0000( 0000| 0| 0) 00000000 00000000 0 0
00024268304i[CPU ] | GS:0000( 0000| 0| 0) 00000000 00000000 0 0
となっていた。何故だかセグメントのindexが1つずつずれている。本来ならば3と4になっているはずなのに