Имя пользователя:
Пароль:
 

Название темы: Delphi,Описание процедуры
Показать сообщение отдельно

Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Crew
Способов передачи параметров много, более того, не все имеют названия.

1) Стек может очищаться как вызывающей функцией (__cdecl), так и вызываемой (_stdcall). Если функция вызывается часто, выгоднее, чтоб она сама очищала стек (почти весь WINAPI такой). Естественно, стек может очищать только та сторона, которая знает о размере переданных параметров.

2) Параметры могут передаваться в стеке в прямом и в обратном порядке.

3) Переметры могут передаваться не только через стек, но и через регистры (один и более, часто EAX или EAX/EDX). Сюда относится __fastcall и обычные паскалевские функции с небольшим числом стандартных аргументов.

4) Есть еще очень интересный способ передачи параметров, используемый при переходе в NT-системах в режим ядра. Все параметры передаются через один регистр, а именно, в него кладется указатель на первый параметр __stdcall-овской функции. Но без знания языка ассемблера такое самому руками, естественно, не написать, по крайней мере, мне не известен компилятор, понимающий такую модель вызова.

На самом деле Delphi Compiler знает много методов вызовов, так что попробую про них почитать во встроенной справке.

Ork Yason
Цитата:
получается что делфя не полностью совместима с винАпи?
Нифига подобного.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 11:52, 24-02-2003 | #14

Название темы: Delphi,Описание процедуры