Building a new computer
So I finished ordering parts from newegg for a new computer I'm building. Please note that I have never built a computer before (I have done hardware tech support though, so have a basic idea)
I (Hope) that they are compatible with each other...I would also like if anyone has any opinions on it. I am hoping for it to become my main programming system for both game and OS development.
This is it:
What do you think?
I want to test it booting up first, before I add extra drives to it (floppy for better OS testing, CD/DVD R/RW combo drive, and a HDD)
OSDev - Basic C++ runtime built
Hey everyone, I just finished developing a basic C++ runtime for the OS Kernel that works for MSVC++ 2005. It currently handles everything, except exceptions and RTTI (I have to research those.)
Because we are in our own envirement, we are unable to use another runtime. Because of this, we need to build a basic runtime to use C++ properly.
At the moment, its inside of the kernel (KRNL.DLL). We cannot expand on it too much until we start getting other systems working properly (Video driver, Memory Manager, et al...) Its only a little over 200 lines of code, and very MSVC++ specific (This is something we cannot change, as MSVC++ creates special object sections within the binary that we need to reference with our code.)
Kernel is not relocatable
There is a small issue that I did not think of until I noticed a couple of oddities. While the kernel program CAN be relocatable, we can only make it relocatable if it has a virtual base address of 0, mapped to a physical location in memory.
This is how files and programs are relocatable--Because they begin at an address 0.
To do this, however, means that we need to map a virtual address space (VAS) using the MMU (Memory Management Unit), which is something we have not covered in Stage 2 (I was planning on covering it in the kernel)
Because of this, there are two small rules:
The second rule seems to be a limitation of the PE file itself (or just MSVC++), because the entry routine address (Inside the PE Optional Header) section of the file is either not updated (When it should), or incorrectly updated (When it should not.)
Everything else should work right off the bat (Without problems of any kind.)
I guess thats all for now...