Mentre i compilatori di Language-Assembly diretti generano il codice richiesto per eseguire attività specifiche per la piattaforma specificata, come fanno gli interpreti?
Esempio astratto
Il seguente pseudo-codice ...
printf("Hello World");
... compilerebbe questo codice di linguaggio assembly.
org 100h
mov dx,msg
mov ah,9
int 21h
mov ah,4Ch
int 21h
msg db 'Hello, World!',0Dh,0Ah,'$'
Vorrei prendere Python come esempio. In CPython abbiamo un'istruzione print
rappresentata da PRINT_ITEM
istruzione VM. Quindi abbiamo una funzione print()
che (sic!) Credo che chiama direttamente o meno la dichiarazione di stampa, potrei sbagliarmi. Ma allora vuol dire che non possiamo fare qualcosa senza implementarlo prima nel codice sorgente della VM? In che modo Python / altri linguaggi interpretati implementano funzioni più complesse come scrivere i dati su file? Significa che davvero tutta la libreria standard / funzionalità di base deve essere implementata nel codice della VM.
Che cosa viene chiamato quando vogliamo scrivere i dati nel file? Non esiste un'istruzione VM diretta per questo in CPython. Quindi chiama un metodo che è definito nel codice C di CPython? O forse il codice C espone solo alcuni flussi che lo abilitano al codice interpretato?
Spero che tu possa capire cosa intendo.