Posso evitare di mantenere lo stato tra le chiamate di programmi?

0

Sto lavorando alla scrittura di un passaggio del compilatore in LLVM; come parte del pass, ho bisogno di creare identificatori univoci per certe istruzioni. Voglio che questo sia prevedibile e coerente, in modo tale che se compilo un programma due volte le stesse istruzioni ottengano le stesse istruzioni.

Ho anche bisogno che gli identificatori siano unici su l'intero programma , il che significa mantenere l'unicità tra più moduli / unità di compilazione / file. Poiché ogni compilazione è una chiamata separata del compilatore (a.k.a. un nuovo processo), l'unico modo che conosco per mantenere questo stato - l'identificatore univoco - è tramite il filesystem. In poche parole:

  1. Crea un file che conserva l'ID utilizzato più di recente, a partire da 0.
  2. All'inizio del passaggio, leggi questo ID dal file.
  3. Incremento secondo necessità durante il mio passaggio.
  4. Alla fine del passaggio, scrivi l'ID sul file.

Tra compilazioni dello stesso programma, dovrò reimpostare questo file su 0 (per garantire lo stesso ID iniziale ogni volta).

Sembra un po 'goffo, se possibile. Ho pensato di usare numeri casuali a 64 bit come UID, ma il problema dell'intero programma di unicità rimane (dovrei mantenere il seed e usare un seed nuovo ma prevedibile / coerente per ogni unità di compilazione).

La mia domanda quindi - posso evitare di mantenere un file temporaneo per mantenere lo stato tra le chiamate di processo? C'è un trucco / paradigma di programmazione che posso usare per evitare questo?

    
posta tonysdg 19.09.2017 - 19:09
fonte

0 risposte

Leggi altre domande sui tag