![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тип Pointer
ArtemESC © (2005-08-24 18:50:00)Доброго времени суток...
Как получить отдельные байты, слова... из "области"(несовсем
правильно выразился),на которую ссылается указатель?
То есть аналогично ассемблерскому: mov al, [bx]
mov dl, [bx + 1]
И одинаковый ли смысл имеют ассемблерский адрес и паскалевский
указатель?
begin...end (2005-08-24 19:10:00) [1]> ArtemESC (24.08.05 19:00) [2]
Скажу, но оптимизации особой не получится.
Пример записи байта $FF по адресу P + 3:
var
P: Pointer;
asm
MOV EAX, P
MOV BYTE PTR [EAX + 3], $FF
end.
ArtemESC (2005-08-24 19:00:00) [2]>>begin...end
А не скажешь как это сделать на асме - для оптимизации...
begin...end (2005-08-24 18:54:00) [3]Например, так:
- конкретный байт:PByteArray(MyPointer)[номер_байта]
- конкретное слово:PWordArray(MyPointer)[номер_слова]
Или путём арифметики с указателями:
- получить байт по адресу MyPointer + 2:PByte(Cardinal(MyPointer) + 2)^