Доступ к членам структуры по ее адресу.
Добавлено: 23 янв 2005, 21:51
Подскажите пожалуйста, как достучаться до членов стуктуры, если известен ее адрес.
В частности, из метода класса.
В частности, из метода класса.
Код: Выделить всё
stuct MY_STRUCT
x dw (?)
y dw (?)
ends
...
mov di, offset my_struct
add di, offset y
mov ax, [di]
Код: Выделить всё
add edi, offset y
**Error** test.ASM(18) Undefined symbol: y
Код: Выделить всё
P386
LOCALS @@
MODEL flat
IDEAL
STRUC MY_STRUCT
x dd (?)
y dd (?)
ENDS MY_STRUCT
DATASEG
MASM ; IDEAL глючит при объявлении структур
my_struct MY_STRUCT <>
CODESEG
IDEAL
_start:
mov edi, offset my_struct
add edi, offset y
mov eax, [edi]
ret
end _start
Ты не ошибаешься, если под m_st понимать имя переменной, структуры, но мне известен только ее адрес. Я пробовал писать MY_STRUCT.y - не пропускает. Неужели придется зашиваться на размер членов?Romeo писал(а):Если я не ошибаюсь, то можно просто написать my_st.y
Ну, дабы не усложнять, про классы мы разговор вести не будем.Подскажите пожалуйста, как достучаться до членов стуктуры, если известен ее адрес.
В частности, из метода класса.
Код: Выделить всё
my_struc struc
x dw ?
y dw ?
my_struc ends
xy_struc my_struc <0,0>
mov ax,xy_struc.x
mov bx,xy_struc.y
Не занимайтесь ерундой молодой человек - не усложняйте сущности без надобности ©IDEAL почему-то не хочет такое принимать.
В том-то и дело, что под рукой у меня НИЧЕГО нет, SL. Поэтому и ошибки в объвлении, уж не обессудьте, господин Andy. Отсюда же и долгая возня вместо краткого чёткого ответа.А что у тебя под рукой? Разве в других ассемблерах доступ к членам структур другой?
Ещё раз заявляю вовсеуслышание и на добрую половину страны: моя "подпись" от Вильяма Окама. Метод действия, в основе которого положена эта концепция, имеет название принцип лезвия Окама. Т.е. из всех возможных гипотез отбрасываются самые сложные и надуманные. В оригинале звучит так:Мы тут поспорили, твоя подпись не от Б.Страуструпа?
Спасибо, действительно скобок не надо. Но компилятор такое пропускал.Andy писал(а):Romeo, SL, у вас ошибки в объявлении.
Код: Выделить всё
mov ax,xy_struc.x
Рад бы последовать вашему совету. Но это необходимо. Не мне. Я б на это давно забил. Диплом пишу. Руководитель приговорил показать пример потомкам - написать все на IDEAL.Andy писал(а):Не занимайтесь ерундой молодой человек
Ну может тогда типа следующего?Но это, к сожалению, не решает моей проблемы. Проблема в том, что (допустим, в области видимости) нет xy_struc, есть только ее адрес.
Код: Выделить всё
my_struc struc
x dw ?
y dw ?
my_struc ends
xy_struc my_struc <0,0>
....
mov di,offset my_struc ; адрес
mov ax,word ptr [di] ; x
mov bx,word ptr [di + 2] ; y