информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеАтака на InternetЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
странный exсeption для реального режима 14.05.02 20:29  Число просмотров: 1002
Автор: :-) <:-)> Статус: Elderman
<"чистая" ссылка>
> Веселые исключения для реального режима. Я о таких не
> слышал, нигде в документации я их не видел.
> Но еще очень странно, что они генерятся не всегда, и в
> память ничего не пишется. По моим наблюдениям, генерятся
> только после запуска определенных приложений, TLINK, TD в
> их числе. Что они делают, что процессор начинает
> вырабатывать GP в реальнов режиме?!

Они всегда генерятся в реальном режиме. Результат зависит от обработчика исключения. TLINK, TD тут скорее всего не причем.
Открываем Ральфа Брауна и смотрим Int 0C, 0D

INT 0D C - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
Desc: the CPU generates this interrupt when it detects a protection violation
which does not fit under any other category having a separate
interrupt
Notes: called in real mode when
an instruction accesses a memory operand extending beyond offset
FFFFh (i.e. WORD at FFFFh or DWORD at FFFDh or higher) in segment
CS, DS, ES, FG, or GS

INT 0C C - CPU-generated (80286+) - STACK FAULT
Desc: this interrupt is generated in protected mode on a stack overflow or
underflow, or if an inter-level transition or task switch references
a stack segment marked "not present"; it is generated in real mode
on accessing a word operand at SS:FFFFh

Проверить очень просто
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>

void interrupt Int0D(...)
{
  printf("Int 0Dh\n");
  exit(0);
}

void main()
{
  setvect(0xD, Int0D);
  asm mov ax, ds:[0xFFFF]
}

---
При запуске в чистом ДОС выводится
Int 0Dh
Никаких TD, TLINK перед этим я не запускал :-))
C Int 0C аналогично.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach