finito il compilatore.



Almeno quello e` pronto, bugghini minori da scovare a parte, e` finalmente feature-frozen. L'ultima aggiunta sono state delle istruzioni interne chiamate "zeroers", che fanno una cosa molto semplice: quando uno assegna a un registro il valore 0, invece di assemblare ad esempio "mov eax, 00000000" con 32 bit di zeri dietro, il compilatore trasforma l'istruzione nel vecchio trucco dello xor (o del sub) del registro con se` stesso, prendendo 2 byte a posto di 5, tanto i flags non sono controllabili in maniera interstiziale e quindi (cioe` per esempio tra una cmp e il salto condizionato). Piu` che altro una rifinitura.
Ah, la LCPL2? E` una licenza che pone condizioni identiche alla LGPL, eccetto per un punto: se la ridistribuzione di un prodotto o di una collezione di cui il prodotto fa parte o a cui e` linkato come libreria, e` sfruttata in modo commerciale, sia l'autore che gli intermediari vogliono la loro parte. Solo per il compilatore, comunque. Il resto e` tutto free "come lo intende Shpalman". Serve idealmente ad evitare che qualcuno ridistribuisca il tutto e campi sull'indotto mentre gli autori originali fanno la fame.
Qui una diapositiva di un listatino che viene dai futuri esempi, che crea un thread e lo mette in esecuzione parallela sul secondo core:


E il suo output:


Ora non resta che rifinire il tutto, scovare eventuali falle residue che dovrebbero essere piuttosto rare, aggiornare le istruzioni per rifletterci il fatto che e` stato implementato il multithreading riempiendole anche di note sulla thread-safety, e poi dovrebbe finalmente farcela ad uscire a riveder le stelle.