Compiler

Status
Niet open voor verdere reacties.

C Windows

Gebruiker
Lid geworden
22 nov 2008
Berichten
159
Hallo allemaal,
ik wil zelf een compiler maken (zoals visual basic etc.). VB is eigenlijn IDE, mar zoiets wil ik dus maken. Kleuren en alle extra's komen later wel, ik wil bij de basis beginnen: Hoe zet ik code om in taal die de computer begrijpt?

Zonder dit kan ik natuurlijk niks he? Dus ik hoop dat iemand hier antwoord op heeft!!!

groeten
 
Intel 64 and IA-32 Architectures Software Developer's Manual volume 1 en 2 (en optioneel 3) lezen
 
Taal bedenken

Je zult dan eerst een taal met Syntax moeten bedenken. Bekijk dan de source code van gratis compilers, lees een boek over compilerbouw (vrij pittige stuf) en leer machinetaal waarin je het moet omzetten.
 
Code:
hoe zet ik code om in taal die de machine begrijpt en kan uitvoeren?

Beter in Assembly worden dan 99,999% van alle andere programmeurs
 
Code:
hoe zet ik code om in taal die de machine begrijpt en kan uitvoeren?

Beter in Assembly worden dan 99,999% van alle andere programmeurs

Waarom BETER worden? Het gaat erom dat ik code kan omzetten in uitvoerbare programma's. Ik ga even wat opensource compilers bekijken om wat meer te leren.
 
code omzetten in uitvoerbare bestanden??????????????????
dat gaat je dus niet lukken :):love:

dus je wilt gaan pronken met ander mans werk??? belachelijk
 
code omzetten in uitvoerbare bestanden??????????????????
dat gaat je dus niet lukken :):love:

dus je wilt gaan pronken met ander mans werk??? belachelijk

Alsje alleen ideeën loopt af te kraken, reageer dan gewoon niet. Of je moet iets nuttigs te vertellen hebben waar ik iets mee kan zoals svdww en vdijken. En waar slaat die laatste regel op? Er zijn veel compilers voor windows hoor.. of wou je zeggen dat die allemaal met andermans werk pronken?
 
Ik probeerde ook een nuttig antwoord te geven :), ik zal het nog eens proberen:

Wat probeer je te doen?
- een programma programmeren met C++ code en dit uitvoeren
- een programma maken om C++ code te compileren en uit te voeren

Er zit namelijk een (groot) verschil tussen deze twee.

Wil je het eerste doen, dan raad ik aan om Visual Studio 2008 Express te downloaden. (gratis van de Microsoft site) Hier zit een mooi compiler en debugger bij en zal meer dan genoeg functionaliteit hebben om je de aankomende paar jaar bezig te houden.

Wil je de tweede optie doen, dan moet je (heel heel heel) erg veel verstand hebben van C++ en Assembly (echt: heel veel). Bovendien is dit meer een meerjaren project voor een team van mensen, dan voor 1 persoon in z'n vrije tijd.
Mocht je toch denken dat het je gaat lukken, dan wens ik je veel succes. Mocht het je dan ook nog eens lukken dan kun je je compiler hier posten en zal ik je voor de rest aanspreken met 'uwe hoogheid'

:thumb:
 
Toen ik drie of vier maanden geleden op een forum had gepost dat ik zelf een OS wou maken, werd ik voor gek verklaard. En nu heb ik een echt werkend OS gemaakt met memory management, mooie layout, bootloaders, etc.

Dus ik heb echt wel verstand van asm/c++. Even terug op uw post: het gaat om de tweede optie. Ik heb hier Visual Studio 2008 Pro, dat heb ik al grondig doorzocht, etc. Probleem is dat ik me nooit echt met compilers heb beziggehouden, maar het lijkt me wel een leuke uitdaging (net als het os). Want in principe snapt een computer alleen eenen en nullen. Stel dat ik een compiler maak die c++ code omzet naar een uitvoerbaar bestand (in windows exe) kan een Apple dat bijivoorbeeld niet lezen. Het idee is dus om een zogenaamde ALGEMENE compiler te maken die elke computer in principe kan lezen. Hoop dat jullie het begrijpen :thumb:
 
Laatst bewerkt:
Toen ik drie of vier maanden geleden op een forum had gepost dat ik zelf een OS wou maken, werd ik voor gek verklaard. En nu heb ik een echt werkend OS gemaakt met memory management, mooie layout, bootloaders, etc.

Dus ik heb echt wel verstand van asm/c++. Even terug op uw post: het gaat om de tweede optie. Ik heb hier Visual Studio 2008 Pro, dat heb ik al grondig doorzocht, etc. Probleem is dat ik me nooit echt met compilers heb beziggehouden, maar het lijkt me wel een leuke uitdaging (net als het os). Want in principe snapt een computer alleen eenen en nullen. Stel dat ik een compiler maak die c++ code omzet naar een uitvoerbaar bestand (in windows exe) kan een Apple dat bijivoorbeeld niet lezen. Het idee is dus om een zogenaamde ALGEMENE compiler te maken die elke computer in principe kan lezen. Hoop dat jullie het begrijpen :thumb:

Een apple heeft een andere CPU dan die waar WIndows op draait (x86), ik neem dus aan dat je meerdere architecturen wilt gaan ondersteunen. Daarbij ook meerdere OSen... Ik heb mij zelf wel eens verdiept in bestandsformaten zoals PE en ELF, alleen dat al kost veel werk.

Maargoed genoeg deprimerende zinnen, ik wens je succes :thumb:
 
Toen ik drie of vier maanden geleden op een forum had gepost dat ik zelf een OS wou maken, werd ik voor gek verklaard. En nu heb ik een echt werkend OS gemaakt met memory management, mooie layout, bootloaders, etc.

Dus ik heb echt wel verstand van asm/c++. Even terug op uw post: het gaat om de tweede optie. Ik heb hier Visual Studio 2008 Pro, dat heb ik al grondig doorzocht, etc. Probleem is dat ik me nooit echt met compilers heb beziggehouden, maar het lijkt me wel een leuke uitdaging (net als het os). Want in principe snapt een computer alleen eenen en nullen. Stel dat ik een compiler maak die c++ code omzet naar een uitvoerbaar bestand (in windows exe) kan een Apple dat bijivoorbeeld niet lezen. Het idee is dus om een zogenaamde ALGEMENE compiler te maken die elke computer in principe kan lezen. Hoop dat jullie het begrijpen :thumb:

Een OS in een viertal maanden. Slaapt ge ooit ofzo? -> ik wil de source daarvan wel eens bekijken & testen;).

Mja topic compiler:

bestaat uit:
  1. Front end (analyse source)
  2. Back end (object code)

analyse:
  1. lexicale analyse (lex maar beter flex met lex syntax)
  2. grammaticale analyse (yacc maar beter bison)
  3. semantische analyse (idem aan boven dacht ik)

object code:
  1. assembler, c++, java, C#, ...

Een goede compiler heeft dus een front end die de source code analyseert, de analyse doorstuurt naar een back end, deze back end kunt ge dan machine specifiek maken. Maar het is niet verplicht om in deze back end assembler te genereren. Ge kunt in theorie ook c++ naar java omzetten etc.

Op zich is het vrij eenvoudig om een compiler voor een mini-taal te schrijven. Voor java,c++ etc. gaat echt echter iets meer tijd kosten (mja, als ge maar 4 maanden nodig had om een OS te schrijven dan moet dit wel een peulenschil zijn).

Om het op alle systemen te laten werken kunt ge 2 dingen doen:
een virtual machine gebruiken zoals java. Of verschillende back end's schrijven (dan moet ge er wel voor zorgen dat de front end volgens de standaarden is geschreven) zoals gcc het doet.

Als ge de compiler op meerde machines wilt laten runnen raad ik zoiezo aan om
gcc (g++), bison en flex te gebruiken en denk aan de standaarden!! De compiler van visual studio is wel fijn enzo, maar die heeft nogal de neiging van de voorkeur te geven aan windows specifieke source code (waardeloos dus).

Enkel leuke boeken:
Modern Compilers Implementation (Andrew W. Appel)
Compilers: Principles, Techniques and Tools (Alfred V. Aho, Ravi Sethi & Jeffry D. Ullman)
 
Een OS in een viertal maanden. Slaapt ge ooit ofzo? -> ik wil de source daarvan wel eens bekijken & testen;).

Het is maar heel simpel hoor, je kan er niet veel in doen; zoals ik al zei, heb ik een bootloader, layout en memory management gemaakt (en kleinigeden als klok etc.). Dus denk nu niet dat het iets als Windows ofzo is ...
Verder bedankt voor de info.

@andriesf: Bedankt voor de link, ziet er handig uit :)
 
Wat is dat nou weer voor onzin antwoord? als je opensource programmas bekijk om er van te leren vind jij dat belachelijk?

Idd, als ik (zoals u zegt) zou pronken met andermans werk zou ik de gehele code kopieëren, het een andere naam geven en op internet zetten. Maar zoals ik al zei, BEKIJK ik de broncode om er van te LEREN. :rolleyes:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan