[free pascal]wywołanie procedury

0

mam adres procedury obsługi przerwania. Czy można ja wywołać jakimś poleceniem pascalowym, czy jedyny sposób to dodanie wstawki asemblerowej i call ?

0

Nie znam się za bardzo na "funkcjach przerwania", ale jeśli to jest po prostu funkcja, w jakiejś ludzkiej konwencji, to da się.

type TProcedura = procedure (a,b,c:longint);stdcall;
var f:TProcedura;
begin
  f:=TProcedura(twoj_adres);
  f(1, 2, 3);
end;

Warto wiedziec, ze jesli zadeklarujemy typ funkcji jako:
procedure (a,b,c:longint);regcall;
to argument a wyląduje w eax, b w edx i c w ecx.

0
Pawel200x.5 napisał(a)

Nie znam się za bardzo na "funkcjach przerwania", ale jeśli to jest po prostu funkcja, w jakiejś ludzkiej konwencji, to da się.

type TProcedura = procedure (a,b,c:longint);stdcall;
var f:TProcedura;
begin
  f:=TProcedura(twoj_adres);
  f(1, 2, 3);
end;

Warto wiedziec, ze jesli zadeklarujemy typ funkcji jako:
procedure (a,b,c:longint);regcall;
to argument a wyląduje w eax, b w edx i c w ecx.

tzn ze przy stdcall wszystko idzie na stos?

0

przekazywanie argumentow przez stos to standardowe przekazywanie

1 użytkowników online, w tym zalogowanych: 0, gości: 1