Come vengono I / O routine di libreria implementato per le lingue che non supportano l'accesso a basso livello?
-
25-10-2019 - |
Domanda
Lingue che non supportano l'accesso a basso livello alla macchina, come ad esempio memory-mapped I / O, spesso (se non sempre) hanno routine di libreria che fornisce tale accesso. Ora, se il linguaggio stesso non supporta tale accesso, come vengono implementate queste routine di libreria?
Soluzione
In realtà dipende la lingua. Alcune lingue hanno una struttura di "interoperabilità", che permette un metodo scritto in quella lingua per chiamare un primitivo libreria che può essere implementato in un altro linguaggio (C, assemblatore, ecc.).
Per esempio, i linguaggi .NET hanno la possibilità P / Invoke che permette loro di chiamare DLL non gestite (che può essere scritto in C, C ++, Assembler, o qualsiasi altro linguaggio che permette funzioni esportate da DLL), ma per il CLR interna utilizzare c'è anche il modificatore "chiamata interna", che è una chiamata diretta in un primitivo libreria implementato all'interno di una delle DLL CLR.