阅读:966回复:1
求命,谁能解决这个问题?(定时中断、异常)
我的程序修改了时钟中断(直接修改IDT)以达到16US的定时,但在运行中会出现缺页异常(有时候几秒后出现,有时长一点,但一定会出现)。
发生异常的代码如下: mov fs:[0],edx mov ecx,[esp+48] mov esi,fs:[124] 0008:80464a37 mov fs:[esi+13],cl 请问哪位大侠能帮我分析它的原因,谢谢 |
|
|
沙发#
发布于:2002-08-16 07:05
I don\'t think it\'s a good idea to modify IDT and hook your ISR. Not because M$ doesn\'t like it. If you look into a Windows provided ISR, you can find the first thing it does is to switch segment registers according to the interrupted task ( to see if it\'s user mode or kernel mode).
81857344 54 push esp 81857345 55 push ebp 81857346 53 push ebx 81857347 56 push esi 81857348 57 push edi 81857349 83ec54 sub esp,0x54 8185734c 8bec mov ebp,esp 8185734e 89442444 mov [esp+0x44],eax 81857352 894c2440 mov [esp+0x40],ecx 81857356 8954243c mov [esp+0x3c],edx 8185735a f744247000000200 test dword ptr [esp+0x70],0x20000 81857362 0f8513010000 jne 8185747b 81857368 66837c246c08 cmp word ptr [esp+0x6c],0x8 8185736e 7423 jz 81857393 81857370 8c642450 mov [esp+0x50],fs 81857374 8c5c2438 mov [esp+0x38],ds 81857378 8c442434 mov [esp+0x34],es 8185737c 8c6c2430 mov [esp+0x30],gs 81857380 bb30000000 mov ebx,0x30 81857385 b823000000 mov eax,0x23 8185738a 668ee3 mov fs,bx 8185738d 668ed8 mov ds,ax 81857390 668ec0 mov es,ax 81857393 648b1d00000000 mov ebx,fs:[00000000] 8185739a 64c70500000000ffffffff mov dword ptr fs:[00000000],0xffffffff 818573a5 895c244c mov [esp+0x4c],ebx 818573a9 81fc00000100 cmp esp,0x10000 818573af 0f829e000000 jb 81857453 ... ... I am not sure how your ISR works, it should be little difficult to hook the ISR without some special considerations. |
|
|