Sto esaminando il porting di un motore di script scritto per Windows su Linux; è per la piattaforma di visualizzazione di Winamp AVS. Non sono sicuro che sia possibile al momento. Da quello che posso dire il codice sta prendendo gli indirizzi delle funzioni C nseel_asm_atan
e nseel_asm_atan_end
e li memorizza all'interno di una tabella a cui può fare riferimento durante l'esecuzione del codice.Qualcuno potrebbe spiegare __declspec (nudo) per favore?
Ho esaminato la documentazione di MS, ma non sono sicuro di cosa faccia veramente lo standard __declspec(naked)
. Qual è il codice prolog ed epilog menzionato nella documentazione? È collegato alle convenzioni di chiamata di Windows? È portatile? Conosci qualche esempio basato su Linux usando tecniche simili?
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) {}
Questo è ciò che si intende per prologo ed epilogo: http: // msdn.microsoft.com/en-us/library/tawsa7cb(VS.80).aspx, sono abbastanza sicuro che puoi '#define __declspec (n)' per espandere a niente per Linux. Penso che GNU C++ implementa qualcosa di simile, ma non sono abbastanza sicuro di cosa sia fuori di testa. –