Volaci konvence je veci ABI - application binary interface, nikoliv pouziteho programovaciho jazyka. ABI je napsano pro kazdou architekturu zvlast a popisuje mj. takove veci, jako jak se volaji funkce, jak se ji predevaji parametry, jak se vraci navratova hodnota, ale treba i jak maji vypadat hlavicky ELF souboru, atd. Kuprikladu volaci konvence x86 a amd64 se dost lisi a predpokladam, ze zde autor nehodla rozebirat detaily a rozdily mezi ABI na jednotlivych platformach. Krome toho "bezny" programator tyto informace ke sve praci nepotrebuje, protoze vsechno za nej zaridi prekladac.
Jenze treba na x86 existuje nekolik volacich konvenci, hlavni dve sou C, kde zasobnik uklizi volajici a Pascal, kde ho uklizi volany. Pokud je budu mezi sebou michat tak mi bude kod docela dobre padat. Ale pokud je tohle na *nixu zalezitosti systemu a kompilatory se tomu podrizujou tak jedine dobre, aspon se tim clovek opravdu nemusi zabyvat.
Jinak ze je rozdil mezi x86 a x86-64 sem nevedel, co sem cetl tak treba x86-64 porad cpe treba navratovou adresu na zasobnik, jediny rozdily sou ve velikosti adres (a registru). Na rozdil od takovyho IA-64 kde je navratova adresa ve zvlastnim registru, takze ji neni mozny prepsat pretecnim promenny na stacku.
A uznavam, tohle asi nebude nejlepsi tema pro vsechny...
Clanek nebyl uplne spatny, ale na muj vkus prilis prakticky, neni mi treba vubec jasny jake ma pouziti libtool vyhody oproti klas. dynamickym knihovnam, v cem se vlastne lisi soubory *.o a *.lo a proc je vubec vyhodnejsi libtool pouzivat. Uvital bych nejake teoreticke pozadi, priklady "jak co udelat" si najdu v howto, v tomto clanku bych radsi nasel alespon odpoved na to proc bych si to howto mel vubec precist.
K IA-64: Opravdu si uklada navratovou adresu do registru ? jak to dela pri vnorenem volani funkci ? Neni to jen neco jako ma SPARC .. prejmenovavani registru pri volani procedur ? Docela by me to zajimalo :-)