Sign in to follow this  
  • entries
    72
  • comments
    51
  • views
    59830

Computer parts and C++ runtime built

Sign in to follow this  
Crypter

367 views

Hey everyone,

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:

  • EVGA 256-P2-N554-AX GeForce 7600GT 256MB 128-bit GDDR3 PCI Express x16 SLI Supported Video Card
  • ASUS P5K3 DELUXE/WIFI-AP LGA 775 Intel P35 ATX Intel Motherboard
  • Thermaltake TR2 W0070RUC ATX 430W Power Supply 115/230 V
  • CORSAIR 2GB (2 x 1GB) 240-Pin DDR3 SDRAM DDR3 1333 (PC3 10600) Dual Channel Kit Desktop Memory (Expensive)
  • Intel Core 2 Quad Q6700 Kentsfield 2.66GHz 2 x 4MB L2 Cache LGA 775 Processor (Already have, it was alot less expensive then though, IIRC)
  • Rosewill TU-155 Black Steel ATX Black 0.8mm SGCC Steel Mid Tower Computer Case (Already have--very nice)

    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.)

    It handles...

  • Calling main() and setting initil stack
  • Initializing all global and static objects (calling ctors)
  • Shutdowns; calls all global dtors
  • new/delete operators. Cannot do anything with it though until we get a memory manager.
  • Pure virtual function call trap handler

    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 Kernel base address must be the address that it was loaded at (1 MB)
  • The Kernel entry routine must be the FIRST routine within the final binary. That is, it should be the first routine within the linker map. I personally recommend putting it into its own object file, and linking that in first. Not doing this will make whatever the first routine is to be executed first, rather then the entry point.

    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...
  • Sign in to follow this  


    3 Comments


    Recommended Comments

    I think you would be better off with DDR2 RAM, from what I have heard the premium you pay for DDR3 isn't worth it and it can be outperformed by good DDR2 that is cheaper. I'd also say your PSU is lacking in power, would be better to spend more and get a 640W+ so you are future proofed when you want to upgrade the graphics card to an 8800 or whatever the next card to come out is.

    Share this comment


    Link to comment
    Hello,

    Actually I would have gone with DDR2 except the motherboard only supports DDR3...

    I was/am kind of worried of the amount of power the system may need, though. 450W seems like it should work. ..Hope so, anyways.

    As or the video card...I may upgrade that a little later to something more powerful. For now, it looks good (looking at the comments, anyways.)

    Share this comment


    Link to comment

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now