Come potrei fare un compilatore in C ++? [chiuso]

1

Questo probabilmente è stato chiesto ma non posso google "Come creare un compilatore in C ++" perché otterrò solo "Come compilare C ++" come risultato. Ad ogni modo, per la mia domanda, mi piacerebbe creare un linguaggio di programmazione semplice in C ++. Ora capisco i file di base di I / O, ma quello che non capisco è come creare un file EXE. Il problema qui è che non so come i file EXE siano esattamente "pianificati", a condizione che la maggior parte delle persone non lo faccia. Stavo per analizzare semplicemente la lingua in assemblea e assemblarla usando un assemblatore. Ma non voglio farlo, voglio davvero compilarlo direttamente in un file EXE. Qualcuno sa come sarebbe fatto? PS: Per tutte le persone che dicono che fare un compilatore è praticamente impossibile, è un processo abbastanza veloce, è solo l'implementazione delle funzionalità di OOP che è difficile

    
posta user1870398 10.06.2013 - 04:10
fonte

2 risposte

7

Penso che tu stia facendo la domanda sbagliata:

How you make I compiler in C++?

Come in qualsiasi altra lingua, in realtà. Avrai bisogno di scrivere qualcosa che prende un input (probabilmente dai file) e compila questo input in qualcosa che è leggibile da una macchina e segue un formato specifico (nel tuo caso, C ++).

Quindi la tua domanda non è corretta e pertinente. Le domande che dovresti porre sono:

Quali sono le specifiche per un file eseguibile ( .exe ) sulla piattaforma Windows?

Guarda le specifiche del formato PE . Maggiori dettagli disponibili qui:

Come scrivere un compilatore per C ++ in C ++?

Ovviamente, supponendo che tu voglia compilare i file c ++, ma sto solo indovinando qui perché non dichiari chiaramente cosa vuoi compilare ...

E dal modo in cui formuli la tua risposta, sai già come farlo, anche se sollevi punti sul modello OO.

Per favore chiarisci la tua domanda se ne hai bisogno di più.

    
risposta data 10.06.2013 - 04:14
fonte
-1

Non c'è molta differenza tra la comprensione dell'assemblaggio e la comprensione del codice macchina che crea. Dovresti creare il tuo assemblatore o almeno studiare lo smontaggio di asm che è stato assemblato da qualche toolchain, in modo da poter creare il tuo codice macchina personale. Anche in questo caso non è un tratto se si è competenti nell'assemblaggio. Il prossimo problema è il formato di file EXE. Googling dovrebbe renderlo abbastanza facile. Per quanto riguarda la pianificazione di ciò che accade nel file EXE, questa è la programmazione di base, non specifica di un file EXE.

Molto probabilmente avrai successo se inizi a utilizzare la lingua del tuo assembly di compilazione del linguaggio, quindi usa una toolchain esistente (assemblatore e linker) per trasformare quel linguaggio assembly in un EXE. Crea ed esegui il debug della tua lingua e del tuo compilatore. Quindi sostituire l'assemblatore e il linker generando direttamente il codice macchina.

    
risposta data 02.09.2013 - 06:15
fonte

Leggi altre domande sui tag