Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

линейный адрес

11K
22 июля 2008 года
zxc
11 / / 28.10.2005
здравствуйте

объявляю структуру:
typedef struct {
int a;
int b;
} S1_t;

объявляю указатель на нее
S1_t *s1;

выделяю память
s1 = maaloc(sizeof(S1_t));

s1 это я так понял относительный адрес, а
как получить ЛИНЕЙНЫЙ адрес этой структуры ?
14
22 июля 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: zxc
s1 это я так понял относительный адрес, а
как получить ЛИНЕЙНЫЙ адрес этой структуры ?



Ну если ты толком не понимаешь, относительный адрес тебе дали или линейный, скажи - зачем тебе это надо??? Не парь себе мозгу :)

И еще это зависит от OC на которой программа компилиться будет, в виндах без разницы, все абсолютные, там только физический другой, причем в некоторый момент его может вообще не быть

11K
22 июля 2008 года
zxc
11 / / 28.10.2005
- железяка просит линейный адрес по которому
данные лежат
- ОС linux
- с указателями дружу на уровне ПРИВЕТ МИР
так что строго не судите.
1
23 июля 2008 года
kot_
7.3K / / 20.01.2000
как правильно замечено выше - мозг себе и другим не парьте.
Разберитесь для начала с методами адресации - например - что в вашем понимании относительный адрес - относительный чего? предположения высказывать не буду.
"железяка просит линейный адрес по которому
данные лежат" - если вы не в состоянии понять что вам нужно сделать попробуйте или привести ошибку которую вы получаете, или хотябы название "железяки". Надо быть полным идиотом, что бы надеяться на то - что на форуме все телепаты и сразу догадаються в чем ваша проблема - и самое главное - что вы понимаете под термином "линейный адрес" - и откуда вы собственно вы термин взяли (смотри выше о "относительном адресе").
350
27 июля 2008 года
cheburator
589 / / 01.06.2006
Цитата: zxc
- железяка просит линейный адрес по которому
данные лежат
- ОС linux
- с указателями дружу на уровне ПРИВЕТ МИР
так что строго не судите.



Железо обычно просит физический адрес, и то если речь идёт о прямом обращении к памяти DMA, а линадрес может просить разве что драйвер.
Не знаю насчет линух, в винде любой адрес, которым оперирует приложение, и есть линейный адрес (т. е. базовый адрес всех сегментов = 0). В линухе не знаю, даже если там не так, указатель наверняка подразумевает под собой понятие как смещения, так и селектора сегмента (формат: 16 бит-селектор, 32 бит-смещение). Смещение - это и есть, наверное, то, что вы подразумеваете под "относительным адресом". У приложения нет "простого" способа узнать линейный адрес исходя из селектора и смещения, тут наверняка должны быть функции в API, которые выдают линейный адрес.
Но я на 95% уверен, что в линухе линейный адрес, как и в винде, совпадает со смещением, т. е. базовые адреса всех сегментов = 0. Так что париться не надо.

350
27 июля 2008 года
cheburator
589 / / 01.06.2006
На этот счёт я писал статьи
http://www.codenet.ru/cat/Other/low-level/
Вам будет полезно почитать, кстати, kot_'у тоже
1
27 июля 2008 года
kot_
7.3K / / 20.01.2000
Цитата: cheburator
На этот счёт я писал статьи
http://www.codenet.ru/cat/Other/low-level/
Вам будет полезно почитать, кстати, kot_'у тоже


хм. не все йогурты одинаково полезны :) и как статья связана с обсуждаемой темой?

350
27 июля 2008 года
cheburator
589 / / 01.06.2006
Цитата: kot_
хм. не все йогурты одинаково полезны :) и как статья связана с обсуждаемой темой?



в вашем случае надо писать "не всеМ йогурты одинаково полезны" )
Речь всё ещё идёт о линейных/относительных и т. д. адресах? Тогда связь со статьёй прямая, особенно со второй частью http://www.codenet.ru/progr/os/RAM/RAM-2.php

1
27 июля 2008 года
kot_
7.3K / / 20.01.2000
Необязательно статья в которой встречаеться слово "адрес" имеет отношение к данной теме. Что особого во второй части статьи (как в прочем и во всех остальных) - и каким боком компиляция из пособий для лаб относиться собственно к вопросу?
11K
30 июля 2008 года
zxc
11 / / 28.10.2005
to kot_
лучше молчать чем флудить

to cheburator
спасибо за статьи, почитал
и вот что подумал:
всетаки действительно физический адрес узнать нужно,
а линейным он назвался потому что нужно при
линейном режиме адресации физичиские
и линейные адреса совпадают,отсюда следует
что нужно или перейти в линейный режим адресации
( читал что под ДОС для этого нужно замутить с дополнительными
сегментными регистрами FS или GS), будит ли это
работать под линуксом не знаю
или c DMA разбираться
14
31 июля 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: zxc
(читал что под ДОС для этого нужно замутить с дополнительными сегментными регистрами FS или GS)



Насколько я помню - нужно перейти в "нереальный" (unreal) режим. Это не баг, это фича :)
Так все-таки, какая ОС требуется? В современных ОС защищенного режима это, скорее всего, получится лишь из драйвера..

11K
31 июля 2008 года
zxc
11 / / 28.10.2005
Цитата: Phodopus
Насколько я помню - нужно перейти в "нереальный" (unreal) режим. Это не баг, это фича :)
Так все-таки, какая ОС требуется? В современных ОС защищенного режима это, скорее всего, получится лишь из драйвера..



ОС Линукс

Если это получится, что произойдет с дугими процессами
в системе?

14
01 августа 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: zxc
Если это получится, что произойдет с дугими процессами в системе?



Ну если граммотно драйвер напишешь то ничего особенного. Так железяка-то через DMA работает, выходит. Значит память надо выделить в режиме ядра (в драйвере)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог