Вверх ↑
Ответов: 16884
Рейтинг: 1239
#1: 2011-05-13 15:35:10 ЛС | профиль | цитата
На будущее

Регистровое соглашение о вызове

В языке Object Pascal, использующемся в Delphi, по умолчанию действует регистровое соглашение о вызове.
Согласно этому соглашению, первые три 32-разрядных параметра передаются в регистры eax,edx и ecx.

Если функция объявлена следующим образом
function Sum(i1, i2, i3 : integer): integer;
то переменная i1 УЖЕ содержится в регистре eax, i2 -УЖЕ в edx, i3 -УЖЕ в ecx.

Если объявлена процедура
procedure TSomeObject.SomeProc(i1, i2 : integer);
то i1 передается в edx, i2 - в ecx, а в eax передается неявно заданный параметр Self!

Это соглашение верно только для Delphi.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
2
Голосовали:Ivann, 1nd1g0