Volani funkci v C pres tabulku vektoru

Miroslav Šinko sinkomiro na gmail.com
Středa Březen 28 01:31:58 CEST 2012


Par poznamok bez testovania:

zadefinujte si typ pointera na funkcie. nie je to nutne, ale sprehladni:
typedef void(*fpFunc1)(int par1);
typedef int (*func2)(int par1, char *par2);

vytvorte instancie pointerov:
fpFunc1 pFunc1;
fpFunc2 pFunc2;

do pointerov teraz treba priradit adresy z tabulky, toto asi z hlavy 
nedam celkom spravne. nejak takto:
pFunc1 = (fpFunc1)*(0x100000);
pFunc2 = (fpFunc2)*(0x100004);

vsetky 3 predchadzajuce kroky sa daju napisat v jednom riadku na 
funkciu, ale by to bolo neprehladne.

potom volanie:
	pFunc1(par1);
	iRet = pFunc2(par1, "par2");


miro


On 28. 3. 2012 0:59, Petr Labaj wrote:
> Potreboval bych pres tabulku vektoru volat v C knihovni funkce, ktere
> budou ulozene nekde ve Flash.
>
> Vyrobit tu tabulku vektoru na definovane adrese snad nebude moc
> velky problem, v linker scriptu tomu vyrobim sekci na pevne adrese
> a udelam tu tabulku treba v ASM:
>
> .section ".vectors"
> .long func1
> .long func2
>
> Ale jak pak ty funkce volat z jineho programu v C, kdyz jedine co vim je,
> ze funkce maji prototypy napr.
>
> void func1 (int par1);
> int func2 (int par1, char *par2);
>
> a ze tabulka vektoru zacina na absolutni adrese treba 0x100000, tedy
> ze adresa funkce func1 je ulozena na 0x100000 a adresa funkce func2
> je na 0x100004.
>
> Diky za kazdy tip.
> PL
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list