-1
私は現在、オペレーティングシステムを開発中です。これはなぜEBPレジスタ値ですか?
ページングのプロセスで、私はページフォルトハンドラを作成しています。ページフォルトハンドラで
write_cr0 :
push ebp
mov ebp, esp
mov eax, dword[ebp+8]
mov cr0, eax
pop ebp
retn
は、オフページングまたはオンにする上記write_cr0機能を使用するためにCR0レジスタのPGビットをセットします。
プロセス#0(アイドルプロセス)でエラーなしで実行されます。 しかし、 EBPレジスタの値をスタックにプッシュ 、シェルプロセスが新しいプロセスを作成し、ページフォルトが発生した場合は、ポップ時に奇妙である。(0xffffffffに)
私は本当に理由を知りません。解決策を教えてください。
なぜページフォールトハンドラの内部でページングをオン/オフする必要があるのでしょうか?それは重大な問題を引き起こす可能性があります。 –
値0xffffffffが間違っていると思われる理由はありますか? – prl
ページフォルトハンドラコードを表示できますか? –