реклама на сайте
подробности

 
 
> преобразование указателя, возможно ли такое
TigerSHARC
сообщение Sep 4 2012, 11:31
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



есть стандартная функция ioctl (функция области ядра в Linux).
Эта функция должна принимать указатель и модифицировать адрес на который он указывает. Но проблема в том, что прототип функции таков, что функция может принимать только unsigned int значение.
А посему возникает вопрос: можно ли в принципе преобразовать адрес указателя в unsigned int и обратно?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
редактор
сообщение Sep 6 2012, 06:44
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Цитата
имевшие 16-битный int и 32-битный far pointer

Насколько я помню DOS и BC3.1, для получения 32-битного указателя требовалось ключевое сово far (расширение компилятора а не стандарт).
Для модели памяти типа LAGE все указатели были типа far pointer (BC3.1), а вот для модели SMALL генерился 16-битный указатель по умолчанию, и 32-битный с ключевым словом far.



--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Sep 6 2012, 07:43
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(редактор @ Sep 6 2012, 09:44) *
Насколько я помню DOS и BC3.1, для получения 32-битного указателя требовалось ключевое сово far (расширение компилятора а не стандарт).
Для модели памяти типа LAGE все указатели были типа far pointer (BC3.1),
Ну вот Вы сами себе и ответили.
Для моделей large и huge все указатели без дополнительного ключевого слова (near) не лезли в int.
А кусок исходника
Код
int *ptr;
int broken_ptr = (int)ptr;
сам по себе не знает, каким компилятором и с какой моделью памяти он будет компилироваться.

Собственно, уважительно относиться ко всему этому (сначала ещё к K&R1, потом к K&R2/ANSI) я и начал где-то в 88-91 годах при переходе с PDP-11 (ДВК) на x86 ("Невроз"), в процессе перетаскивания кое-чего из уже успевшего быть написанным :-)


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 22:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016