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
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