Domanda

Ho intenzione circa l'attuazione di un collegamento dinamico nel mio smalltalk dialetto. Il problema è di ottenere il messaggio che passa a lavorare con il collegamento dinamico.

Messaggio stesso passaggio è semplice come questo: messaggio con un selettore viene inviato all'oggetto, l'oggetto prende un metodo di corrispondenza con il selettore dal suo protocollo, quindi elabora i dati incorporati nello messaggio e restituisce il risultato.

In implementazioni basate su immagini, si può attuare il passaggio di messaggi in maniera molto semplice - I suoi selettori messaggi possono essere solo numeri interi tradotti dalla tabella dei simboli globale, i vostri protocolli possono essere tabelle hash solo con numeri interi e gli indirizzi in loro. Supponendo che è tutto compilato in un unico grande immagine a quella tabella dei simboli globali.

In collegamento dinamico, non si può assumere una tabella di simboli che punta a una corretta selezione. Si può girare intorno al problema con l'utilizzo di stringhe come i vostri selettori, ma si condannerebbe la lingua essendo più lento.

C'è un modo, e si tratta di copiare i protocolli e un tavolo di selettori per il processo a trasferirsi in modo corretto. Ma è suona come un sacco di lavoro del tutto.

C'è modi migliori per risolvere questo problema? Inoltre, è il collegamento dinamico vale la pena? Come avrei potuto realizzare il trasferimento per i selettori ei protocolli?

È stato utile?

Soluzione

Certo si può assumere una tabella dei simboli globale, basta aggiornarlo e garantire in fase di collegamento che i codici utilizza solo istanze di simboli da quel tavolo. Hai avuto uno sguardo a Squeak? Il codice di carico è a livello di immagine (non VM) quindi è facile per navigare da qualsiasi immagine Squeak.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top