[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] Hvordan skrives en compiler ?



"Bjørn Houdorf" wrote:
> 
> Hej SSLUG?er!
> 
> Et lille spørgsmål:
> Når man nu kan skrive en  applikation i højnivau-sprog, i hvilket slags
> "programmeringssprog", skriver man så de elementer eller "byggesten" der
> skal bruges til at skabe et programmeringssprog ?

I et programmeringssprog der findes en oversætter til?

Det er et interessant problem, kendt som bootstrapping. Den klassiske
historie om Baron Von Munchhausen der hiver sig selv op af sumpen ved at
hive i sin hestehale bruges som regel som eksempel :)

Det kan jo selvfølgelig være, som det også var i "tidernes morgen",
assembler (maskinkode). Når man laver en ny arkitektur har man som regel
en emulator (Fx. Merced emulatorer der i øjeblikket bruges til at
udvikle Linux/Merced på, hos HP). Man bruger derefter en
kryds-oversætter (cross-compiler) for at oversætte noget til den nye
maskine, mens man sidder på den gamle. Gcc kan oversætte til et ekstremt
antal arkitekturer. Du kan fx. kompilere gcc, således at den på din
Linux/i386, oversætter til Linux/m68k, eller SunOS/Sparc osv. Man kan
dog vist komme i problemer med linkning, det er ikke noget jeg
overhovedet har prøvet. På den måde kan man oversætte til en ny
arkitektur.

Hvis du prøver at hente gcc kildekoden og oversætte den vil du se at den
laver sig selv i flere trin. Først bruger den en eksisterende C
oversætter, som formodentlig kan være meget simpel, fx. en evt. oldtudse
gammel version af GCC. Vha. denne laver den en ny oversætter som så
bruges i trin 2 til at lave en mere avanceret, dette fortsættes "ad
nauseum" ;-)
 
> Hvordan skriver man f.eks. en compiler for et programmeringssprog som
> endnu ikke findes til Linux ?
> Skrives en sådan compiler i maskinkode, assembler eller et højniveau-sprog
> som f.eks. C++ ??

Man skriver som regel "seriøse" oversættere i C/C++. Fx. i
undervisningssammenhæng kan man skrive oversættere i andre sprog, fx.
ML/Java osv.

Mvh Morten


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:07 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *