[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 1711] Re: VMware error.
小柳です。
Hidemi KAWAI wrote:
>
> こんにちは、川合です。
>
> Koyanagi Masaaki さんは 2001/05/05 17:49:13 の「[OSASK 1705] Re:
> VMware error.」で書きました:
>
> >create_task() 内の4090行の
> >LLDT(DX);
> >において VMware が "Internal Monitor error" を出すことが分かりました。
>
> そうなると、僕が知りたいのはDXの値です。つまり、LLDT(DX);を実
> 行する直前のEDXの値はいくつでしょうか?INT(0x03);を入れて、EDXを
> 値を調べて教えてください。
INT 0x03 Break Point
CS:EIP = 10:21EB
EAX = 396
ECX = 60
EDX = 0
EBX = 0
ESP = FFFFCFA4
EBP = 0
ESI = 1000
EDI = C00
tss = 55AA55AA
TR = 0
EDX は 0です。VMware 上ではなく通常起動でもこれと全く同じ結果
になりました。
インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・マニュアルの
LLDT を見ると、
>ソース・オペランドが0である場合は、LDTRは無効とマークされ、
>LDT内のディスクリプタへのすべての参照(LAR、VERR、VERW、または
>LSL命令によるものを除く) によって一般保護例外(#GP) が発生する。
と書いてあるので、不思議な気がします。
> 僕の予想では、VMware上では、4073行目にあるSLDT(DX);が正しく実
> 行されていないのではないかと想像しています。そのせいで、LLDTした
> ときにエラーが出るのでしょう。
SLDT(DX) の直後に INT 0x03 を入れてみたのですが、VMware 上でも
通常起動でもやはり EDX = 0 でした。
--
小柳 雅明(Koyanagi.Masaaki !Atmark! nifty.ne.jp)
「人の足を止めるのは"絶望"ではなく"諦観"
人の足を進めるのは"希望"ではなく"意志"」
-- ARMS