TURBO PASCAL |
Новости
|
Соглашения о вызовах методовМетоды используют те же соглашения о вызовах, что и обычные процедуры и функции, за тем исключением, что каждый метод имеет неявный дополнительный параметр Self, который соответствует пара- метру-переменной того же типа, что и объектный тип данного мето- да. Параметр Self всегда передается последним и всегда имеет фор- му 32-разрядного указателя на экземпляр, из которого вызывается метод. Например, если переменная PP имеет тип PPoint, как опреде- лено выше, то вызов PP^.MoveTo (10, 20) кодируется следующим об- разом: mov ax, 10 ; загрузить 10 в AX push ax ; передать PX как параметр mov ax, 20 ; загрузить 20 в AX push ax ; передать PY как параметр les di, PP ; загрузить PP в ES:DI push es ; передать, как параметр Self push di mov di, es:[di + 6] ; извлечь смещение ТВМ из поля ТВМ call DWORD PTR [di + 16] ; вызвать запись ТВМ для MoveTo Во время возврата метод должен удалить параметр Self из сте- ка точно так же, как он удаляет обычные параметры. Методы всегда используют дальний тип вызова, независимо от состояния директивы $F компилятора. |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |