User:Bellezzasolo

From OSDev.wiki
Jump to navigation Jump to search

Me

Welcome to my home page. For that reason please edit the talk area, not this part. Here are the pages I've created:

Talk to me

You can talk to me at my talk page. Any contribution greatly appreciated.

My experience

Accolades:

  • No computing-related official accolades. (I'm too young yet)
  • However, I do have a working OS. That has to count for something! :)

However I do have over a year's experience of OS deving in holidays and at weekends.

I have been programming for almost 3 years. I know that makes me probably the most inexperienced on this community, but allow me to continue. Order of languages:

  • HTML
  • JavaScript -a month or so down the line
  • PHP(never really got going because of server side) -similar time
  • Java(again never really got going) -a few months down the line
  • C++ - loved it, but never had a brilliant idea. -about 6 months in

Started OS programming here -about 1 1/2 years in. I found working on someone else's black box unworkable. I had no brilliant ideas and the API was difficult to learn, whereas creating my own? Easy.

  • Assembly - x86
  • C - know the basics from C++ and brief experience. My OS is totally C++, with many Object Orientated elements.

I learnt a large amount of basic C++ through my OS. I used the brokenthorn OS as my OS for a while, and at it's height I was working on loading programs.

I decided to restart and do my own coding. I now have a white CLI on a light blue background in PMode and CLI functionality, with PCI probing and a simple VFS (along with a disk management system I call the VDS)(Both implemented as classes) I also have a simple VGA graphics screen. I now probably can be called a C++ guru as I know how to manipulate pointers and references, as well as classes. I still find asm a bit cluttered if the algorithm is complex, but if I'm doing my kernel in C++ I only need to provide basic asm routines.

My Setup

Overview

I have a OS that is going to support x86 and AMD64 (with an actual 64 bit version). For testing purposes I am currently using the BrokenThorn bootloader. I am adabting it for 64 bit purposes, but my target setup is my own bootloader on a HDD (MBR currently working).

Assembler

I use NASM as my assembler, in conjunction with the Notepad++ editor.

Compiler/Linker

I use the unusual, but productive and familiar, environment provided by Visual C++ 2010 Express (SP1). I installed the windows SDK (update for SP1) for the 64 bit compilers. Because Visual C++ doesn't support 64 bit inline asm or naked functions I use this type of setup:

//Asmlayer.h - 32 bit and 64 bit
#ifdef __cplusplus
extern "C" {
#endif
 void disable();
 //other function declarations go here
#ifdef __cplusplus
}
#endif

And in my asm code:

;Asmlayer.asm - 32 bit version
BITS 32
global @disable@0 ;all will be revealed
;other declarations go here

@disable@0:
cli
ret

;Asmlayer64.asm - 64 bit version
BITS 64
global disable
;other declarations go here

disable:
cli
ret

Note the fastcall convention - 64 bit VC++ only supports fastcall. I use the integrated editor for C/C++, and Notepad++ for asm (syntax highlighting)

Controversial issues

I use gotos. Sometimes I come across an algorithm I've just written and there are to options: rewrite the algorithm or use the goto. For lack of time to rewrite the algorithm, I use a goto. Don't get me wrong, I'm a fan of neat code. However, there are times when I use a goto and the odd goto doesn't mess up neatness. Admittedly, a algorithm full of gotos would be hard to follow around (like asm), but the odd goto is like using the odd break statement. That is my opinion.

Emulator

I use several emulators, but for testing purposes it has to be bochs.

Development/Test PC

For development I use an HP Pavilion g6 (6GB RAM, quad-core 1.5 GHz AMD A8 3500M, 1TB HDD), with Windows 7 64 bit home edition.

For testing I will use emulators, then once fairly trusted I will place on a HP Pavillion 6405 (64MB RAM, 6GB HDD, 400Mhz Celeron), which currently has Win98 SE dual-booted with Linux Mandrake 7. Once I have tested HDD's completely, I will place it on a small partition of my development PC (64 bit testing).

My OS

My OS is an 32/64 bit x86 OS. It currently has a CLI implemented in a grpahics mode, and virtually no drivers (basic chip drivers only). It WILL be extended to HDD's and use a custom file system, CFS.

See also

Me

My Likes

Related articles

  • None yet