I am learning about how exactly compilers, os's, and personal computers work internally. Here's my current plan:

  1. Write an easy virtual machine in C, that may accept input designed in its machine language ( a custom language of my specs. )
  2. Write a an assembler for your virtual machine.
  3. Write a really fundamental compiler for any fundamental-like language for that machine.
  4. Extend the interaction from the virtual machine by together with a screen (I believe I'll use SDL), as well as an interface to that particular screen via video memory. I possibly could include mouse/keyboard functionality.

Could anybody produce some suggestions for researching compilers? I believe my plan is ideal for putting my understanding right into a more practical and concrete application, but what must i look for, or what must i do to learn more?

Nothing way too hard though, I am not too great with subjects which are too abstract or things designed in a too official and rigorous style. I am just an incoming newcomer in senior high school.

Any tips or recommendations could be nice. Thanks ahead of time!

Just how much programming do you know?

Writing a FORTH interpreter is a great exercise. It's comparatively simple, and also the language and semantics happen to be well-defined, so you don't have to go and design your personal system on your own. FORTH typically also offers a compiler (even though it is certainly not just like a C compiler) and could come with an assembler built-in, which means you could investigate individuals also. You'll have the mental tools for controlling memory, handling pointers, solving references, and the like.

Searching in an existing simple compiler is going to be useful also. After you have internalized what it's that the compiler does - translate a bouquet of symbols into another - then you might like to start searching at parsing grammars and related subjects. There's a great deal of knowledge available, go just a little at any given time or you will get overcome effortlessly.

This is a great listing of goals. Some people visit college for four years to understand that. I've no clue of the background, however i might assume you have done some fundamental programming (Fundamental programming?) and set up language. Should you haven't, this is a starting point. Learning something about grammars and regular expressions after which by using their to build up a parser and interpreter for areas of an easy language by having an easy grammar, like Pascal, will be a method to discover the front-finish. Then move ahead and add code that creates set up...the rear finish.