Форум: "Система";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
Внизmov eax, Найти похожие ветки
← →
Xia (2002-10-29 16:39) [0]раньше в winxp проходило сл.:
var
BD:dword;
.....
asm
mov eax,[$FFFF5] {- error}
mov bd,eax
end;
сейчас error компилятора.систему и дельфи не менял.что не так?
← →
Наезжалкин (2002-10-29 16:44) [1][ ] зачем?
← →
Digitman (2002-10-29 16:46) [2]Какая {- error} ? Конкретно ?
← →
Xia (2002-10-29 19:03) [3]2Digitman
Invalid combination of opcode and operands
А exe"шник пишет ошибку доступа- что там acsess v...
2Наезжалкин
информацию о бивасе знать хочу..
вообщето прогу к компу надо привязать...- кто-нить может подсказать.
← →
Digitman (2002-10-30 08:26) [4]>Xia
Если ты даже скомпилировать не можешь, откуда "exe"шник"-то взялся ?)
А насчет AV - правильно "пишет". Адресное пространство BIOS недоступно для обращения через вирт.адр.пространство пользовательского процесса в Win32
← →
soware (2002-10-30 09:30) [5]А под администратором не пробовал логиниться в XP ?
← →
Tano (2002-10-31 03:53) [6]Пока не выделишь себе в программе эту память - EXEшник будет писать Access violation, даже если компилятор пропустит. Вообще не знаю, как такую конструкцию пропускал компил - у меня такое вроде не работало. Используй вместо этого
mov ebx,$fff???????
mov eax,[ebx] //или mov eax,QWORD PTR ebx
← →
Tano (2002-10-31 03:56) [7]sorry, не QWORD, а DWORD
и еще - попробуй отключить в опциях компилятора Range Check (можно диективой {$R-})
← →
Digitman (2002-10-31 08:32) [8]
> Пока не выделишь себе в программе эту память
Любопытно, как же ты это себе мыслишь ?)
← →
Странник (2002-10-31 11:40) [9]> Digitman © (31.10.02 08:32)
а в BIOS есть недокументированная функция
DWORD* AllocateBIOSMemoryPointer(adr:WORD););
которая мапит ROM в адресное пространство вызывающего потока.
так что все путем...
← →
Странник (2002-10-31 11:46) [10]забыл добавить, доступна только если RAS/CAS=2 и установлено Shadow BIOS Memory на нужный сегмент.
← →
Digitman (2002-10-31 12:15) [11]
> а в BIOS есть недокументированная функция
> DWORD* AllocateBIOSMemoryPointer(adr:WORD););
> которая мапит ROM в адресное пространство вызывающего потока.
> так что все путем...
У потока нет АП. Оно есть у процесса.
Ну и ? Какое отношение ф-ции BIOS (пусть даже и недокументированные) имеет к модели виртуальнй памяти, используемой конкретно в Win32 ? А если работает ОС, отличающаяся от Win32 ? И там нет вообще понятия "процесс" ?
Если же таки речь все же идет не от ф-ции BIOS, а о недок.вызове Win32-ядра, то где, в каком модуле ядра реализована эта ф-ция ?
← →
Странник (2002-10-31 14:11) [12]ну, уважаемый Digitman и Вы попались...
присмотритесь повнимательней :))
DWORD* AllocateBIOSMemoryPointer(adr:WORD) ;);
ведь правильно будет так:
threadvar ponter* AllocateBIOSMemoryPointer(volatile unsigned pointer BIOSadr);
;^)))
← →
Digitman (2002-10-31 14:29) [13]>Странник
Ты это к чему вообще ?
Я, кажется, задал вполне конкретные вопросы :
1. Каким образом исп.код BIOS"а может чего-то там на что-то "мапить", если ему ничего не известно о местоположении GDT/LDT ?
2. Где ты нашел такую декларацию ?
Теперь еще и 3-й вопрос к тебе :
При чем здесь threadvar ? Какое это имеет отношение к сабжу, когда речь идет конкретно о селекторах сегментов, каковые находятся исключительно в ведении protected mode ОС , а не BIOS ?
← →
Странник (2002-10-31 14:56) [14]да ПРИКАЛЫВАЮСЬ Я, неужели не понятно.
ессно, под NT только из нулевого кольца можно напрямую добраться до нижних адресов, а тем более к BIOS.
BIOS не использует ни GDT ни LDT, оно ему на фиг не нужно, а тем более виртуальные адресные пространства каких-то там процессов.
Зри в корень © Козьма Прутков
жуткую смесь паскаля и С и веселого настроения ты принял за чистую монету. :((
Нельзя быть постоянно таким серьезным, да еще в "Потрепаться". ;)))
← →
Digitman (2002-10-31 15:08) [15]>Странник
Вот в "Потрепаться", сударь, и уместен треп. А здесь - "Система". Малясь промахнулся ты)
Ну а насчет "мапить" ФАП BIOS - оно вполне реализуемо. Только BIOS - как ни крути - здесь ни при чем)
← →
han_malign (2002-10-31 16:39) [16]Я просто сделал поиск в Google по ключу FFFF5 Delphi
Title: Read from BIOS
From: n_pelov
Date: 03/29/2001 01:05PM PST
Answer Grade: A Points: 5
Hi!
I want to read 8 bytes from address $F000:$FFF5 in BIOS. When I make it with pascal for DOS I have no problems, but if I try it in delphi ot Borland pascal for windows (16 bit) it dosn"t work. Do any one can tell me how to do it?
...............................................................
Accepted Answer from Hamlet 03/29/2001 05:43PM PST
Okay, I"ve checked this out a bit more and you can ignore most of my previous comments!
For Win95/98 you can do this...
BIOSDate := string(pchar(ptr($FFFF5)));
For WinNT you should read from the registry...
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\SystemBiosDate
← →
Digitman (2002-10-31 17:21) [17]>han_malign
>>For Win95/98 you can do this...
>> BIOSDate := string(pchar(ptr($FFFF5)));
Те же ..., но вид сбоку)
Не будет это работать.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c