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

 
 
> преобразование указателя, возможно ли такое
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 5 2012, 06:03
Сообщение #2


Местный
***

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



Не уверен (поскольку не имею документального подтверждения, кроме личного убеждения), но кажется размер указателя всегда равен размеру переменной типа int.


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


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (редактор @ Sep 5 2012, 09:03) *
Не уверен
И правильно, что не уверены. IAR AVR: int = 16 bit, generic ptr - 24bit. Да и еще не так давно почившие 16-битные x86 приложения, имевшие 16-битный int и 32-битный far pointer:
QUOTE
For example, in an Intel 8086, as well as in later processors running 16-bit code, a far pointer has two parts: a 16-bit segment value and a 16-bit offset value. A linear address is obtained by shifting the binary segment value four times to the left, and then adding the offset value. Hence the effective address is 20 bits (actually 21-bit, which led to the address wraparound and the Gate A20). There can be up to 4096 different segment-offset address pairs pointing to one physical address. To compare two far pointers, they must first be converted (normalized) to their 20-bit linear representation.



--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


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


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