Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];
ВнизЕще немного по ассемблеру Найти похожие ветки
← →
dmk © (2014-11-07 02:35) [0]Как из функции на ассемблере вызвать overload функцию? Возможно ли это?
← →
Германн © (2014-11-07 02:57) [1]
> dmk © (07.11.14 02:35)
>
> Как из функции на ассемблере вызвать overload функцию? Возможно
> ли это?
Что такое функция на ассемблере? И что ты подразумеваешь под вызовом Overload функции?
Ассемблер - это совсем другой уровень. Он ничего не знает про всякие там ООП.
Встроенный в Дельфи ассеммлер это уже нечто другое, но только благодаря встроенной поддержке ассемблера в компиляторе Дельфи.
← →
Inovet © (2014-11-07 07:37) [2]Не, но вызвать, тем не менее, можно всё что угодно. У функций всё равно генерируются уникальные имена. Это если речь про нормальный (не встроенныей в Делфи) ассемблер.
← →
MBo © (2014-11-07 08:02) [3]В общем, человеческого способа нет, overload - магия компилятора, и для вызова нужно получит адрес нужной функции, кухня чего скрыта (простое взятие адреса вернет адрес первой функции).
Вот метод, который был предложен в этом форуме GuAV:function A(i: Integer): Integer; overload;
begin
Result := i + 1;
end;
function A(i, j: Integer): Integer; overload;
begin
Result := i + j;
end;
procedure TForm1.Button4Click(Sender: TObject);
const
A1: function(i:Integer):Integer = A;
A2: function(i, j:Integer):Integer = A;
var
r1, r2: Integer;
begin
asm
mov eax, 3
call A1
mov r1, eax
mov eax, 3
mov edx, 4
call A2
mov r2, eax
end;
Caption := Format("%d %d", [r1, r2]);
end;
← →
brother © (2014-11-07 08:12) [4]> const
> A1: function(i:Integer):Integer = A;
> A2: function(i, j:Integer):Integer = A;
это я не понял, где об этом почитать и для каких версий делфи?
← →
MBo © (2014-11-07 08:26) [5]Если вопрос о константах, то это typed Constants, в данном случае функционального типа.
Существуют они давно, но возможно, не всегда их можно было делать локальными.
Есть еще опция компилятора Assignable typed Constants {$J+}, позволяющая их изменять.
Если вопрос о функциональном типе - то это было ещё в Турбо Паскале.
← →
dmk © (2014-11-07 10:58) [6]Спасибо! Видимо overload просто надстройка со скрытым механизмом. Сделал разные названия функциям.
← →
MBo © (2014-11-07 11:35) [7]>Сделал разные названия функциям.
И правильно. Ни к чему из-за небольшого синтаксического сахара геморрой обретать
← →
Rouse_ © (2014-11-07 22:59) [8]Есть человеческий способ, но вариант от GuAV гораздо проще, в противном случае придется много обвеса реализовать, поверх функционала, практически своя VMT выйдет.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2015.09.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.056 c