TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

Соглашения о вызовах методов 

             Методы используют те же соглашения о вызовах,  что и обычные
        процедуры и функции,  за тем исключением,  что каждый метод имеет
        неявный дополнительный параметр 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 компилятора.

Содержание

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz