Память

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
amer
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 02.08.2003 (Сб) 19:41
Откуда: Воронеж

Память

Сообщение amer » 06.10.2003 (Пн) 13:40

:?: Каким образом обратиться к ОЗУ из VB

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 06.10.2003 (Пн) 14:41

Есть два пути:

1) Автор переформулирует вопрос и точно и ясно объясняет что ему надо.

2) Я тему закрываю и автору вкатываю замечание.



Времени на выбор дальнейшего развития событий - до 12.00 7.10.2003

amer
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 02.08.2003 (Сб) 19:41
Откуда: Воронеж

Сообщение amer » 06.10.2003 (Пн) 20:30

Если я правильно понимаю то к какому - либо устройству (например к USB порту можно обратиться используя адрес в памяти, возможно я не прав, может нужно использовать контекст устройства, но опять же он должен быть адресом в памяти, наверное) вобщем я много прочитал и все перепуталось, извините....
Т.О. могу я управлять портами ввода вывода посредством памяти из VB?
простите если получился бред сумасшедшего :lol:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.10.2003 (Вт) 9:17

DMA? Имхо, облом.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.10.2003 (Вт) 11:04

Код: Выделить всё
Dim I As Integer
I = 0
MsgBox I


В третьей строчке (да и во всех остальных) идет обращение к памяти.
Lasciate ogni speranza, voi ch'entrate.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4158
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 07.10.2003 (Вт) 16:05

Не стращайте человека, он и так в цейтноте...

Говоря просто, Windows не даст читать, а тем более писать в память, отданную другим программам, а порты ввода-вывода не адресуются через память, по крайней мере на IBM совместимых ПК (Помню на Atari это работало).

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.10.2003 (Вт) 16:12

А как же порты ввода вывода адресуются, интересно мне вдруг стало :?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4158
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 07.10.2003 (Вт) 16:21

Вывод в порт:

mov DX,Addr
Out DX,Al

запись в память:
mov [Addr], Al

разница есть? Или я вопрос не понял?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.10.2003 (Вт) 16:32

Вопрос я кажется как то по косячному задал. Я имел в виду что у устройства еть по любому еще и диапазон памяти, через который оно произовдит ввод\вывод. Помимо портов.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4158
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 07.10.2003 (Вт) 17:16

Если устройство не использует DMA, то данные в память могут попасть только через драйвер. Так было под ДОС. Одно из исключений - прямая адресация видео ОЗУ. А с другой стороны - это не исключение, видео ОЗУ - тоже память, просто расположенная на видеокарте, в ней даже можно запустить программу.
Сейчас не знаю, может есть другие варианты. AGP, вроде, тоже использует DMA, но распределяет, кроме того, дипазоны адресов за границей физической памяти.

amer
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 02.08.2003 (Сб) 19:41
Откуда: Воронеж

Сообщение amer » 07.10.2003 (Вт) 22:08

как интересно....
но у меня есть какие либо шансы?

я могу рассказать идею проги: ICQ 173355285

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 07.10.2003 (Вт) 23:17

Mikle писал(а):Если устройство не использует DMA,...

Во времена XT это называлось ПДП (прямой доступ к памяти). Но с появлением 286-го все изменилось. Вспомните про аппаратную ошибку связки Intel-AMD, которая впоследствии оказалась очень полезной и позволила видеть память за пределами 1 Мб сегментами по 64к. То-же относится и к видео (кроме, если мне память не изменяет текстового буфера с В000 по ВFFF), только каждый сегмент надо предварительно адресовать через порт. В AGP для адресации сегмента скорее всего ипользуются новые команды. Но фишка в другом. В ДОСОвых бейсиках существовал оператор POKE СМЕЩЕНИЕ, ЗНАЧЕНИЕ БАЙТА и функция PEEK (СМЕЩЕНИЕ) возвращающая байт. В VB ничего подобного не видно.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 2

    TopList