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 ?
[free pascal]wywołanie procedury
- Rejestracja: dni
- Ostatnio: dni
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 370
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?
- Rejestracja: dni
- Ostatnio: dni
0
przekazywanie argumentow przez stos to standardowe przekazywanie