Szukam do przeniesienia silnika skryptowego napisanego dla Windows na Linuksa; to jest dla platformy wizualizacji Winampa AVS. Nie jestem pewien, czy w tej chwili jest to możliwe. Z tego co wiem, kod pobiera adresy funkcji C i zapisuje je w tabeli, do której może odwoływać się podczas wykonywania kodu.Czy ktoś mógłby wytłumaczyć __declspec (nagi), proszę?
Zajrzałem do dokumentacji MS, ale nie jestem pewien, co naprawdę robi __declspec(naked)
. Co to jest kod prolog i epilog wspomniany w dokumentacji? Czy jest to związane z konwencjami wywoływania systemu Windows? Czy to jest przenośne? Znasz jakieś przykłady oparte na Linuxie, używając podobnych technik?
static double (*__atan)(double) = &atan;
__declspec (naked) void nseel_asm_atan(void)
{
FUNC1_ENTER
*__nextBlock = __atan(*parm_a);
FUNC_LEAVE
}
__declspec (naked) void nseel_asm_atan_end(void) {}
To, co one oznaczają przez prolog i epilog: http: // msdn.microsoft.com/en-us/library/tawsa7cb(VS.80).aspx, jestem prawie pewien, że możesz po prostu '#define __declspec (n)' rozwinąć do zera dla Linuksa. Myślę, że GNU C++ implementuje coś podobnego, ale nie jestem do końca pewny, co to jest poza moim zasięgiem. –