Difference between revisions of "Reference"

From ReactOS Wiki
Jump to: navigation, search
m
Line 1: Line 1:
 
<b>This is a work in progress by Z98</b>
 
<b>This is a work in progress by Z98</b>
  
This page contains a list of reference materials separated by topic.  Most are relevant to ReactOS development and several are related to Microsoft(C) technologies.  They have been separated by category so you can better choose what materials are of interest to you.
+
This page contains a list of reference materials separated by topic.  Most are relevant to ReactOS development and several others are related to Microsoft(C) technologies.  They have been separated by category so you can better choose what materials are of interest to you.
  
 
=Programming=
 
=Programming=
  
Before you can begin programming an operating system, you need to know how to program.  The following are references and tutorials that one can use to learn various principles.  As ReactOS uses primary C, C++, and Assembly, we will only cover those in this section.  The Assembly languages we will cover will be for Intel/AMD and PowerPC, as those are the only architectures ReactOS has code for.  For C# and .NET related matters, scroll downwards.  Each reference will be ranked as Introductory, Intermediate, or Advanced.  Some may be more than one and a rare few will cover topics from all three.
+
Before you can begin programming an operating system, you need to know how to program.  The following are references and tutorials that one can use to learn various principles.  As ReactOS uses primary C, C++, and Assembly, we will only cover those in this section.  The Assembly languages we will cover will be for Intel/AMD and PowerPC, as those are the only architectures ReactOS has code for.  For C# and .NET related matters, scroll downwards.  Each reference will be ranked as Introductory, Intermediate, or Advanced.  Introductory assumes no knowledge of programming, Intermediate assumes you know how to use the language in question, and Advanced covers some of the more tricky topics in programming.  Some may be more than one and a rare few will cover topics from all three.
  
 
==Online==
 
==Online==
Line 16: Line 16:
  
 
http://www.newty.de/fpt/index.html -Intermediate/Advanced
 
http://www.newty.de/fpt/index.html -Intermediate/Advanced
 +
 +
A very nice reference to the C and C++ Standard Libraries.  In order to do anything substantial or even trivial, you're likely to be using things from the Standard Libraries.
 +
 +
http://www.cppreference.com/index.html -Intermediate/Advanced
  
 
An introduction to IBM's PowerPC.  If you've never seen assembly code before, I'd advise you start with learning the assembly for a RISC architecture like the PPC.
 
An introduction to IBM's PowerPC.  If you've never seen assembly code before, I'd advise you start with learning the assembly for a RISC architecture like the PPC.
Line 63: Line 67:
  
 
==Books==
 
==Books==
 +
 +
A book that covers the theory behind operating systems and also examines their implementation in Minix.  It's a great book for learning the fundamentals and immediately delve into how they're transformed into code.
 +
 +
Operating Systems: Design and Implementation (The Minix Book) ISBN 0-4716-9466-5 -Introductory/Intermediate
  
 
<i>The</i> book for learning about the Windows operating system.  This book covers 2000, XP, and Server 2003.
 
<i>The</i> book for learning about the Windows operating system.  This book covers 2000, XP, and Server 2003.
Line 79: Line 87:
  
 
Developing Drivers with the Windows Driver Foundation ISBN 0-73-562374-0 -Advanced
 
Developing Drivers with the Windows Driver Foundation ISBN 0-73-562374-0 -Advanced
 +
 +
=.NET=
 +
 +
While ReactOS does not have any components to support .NET, it is the future of Windows application programming and will have to be dealt with.  .NET is a remarkable piece of technology, though not without its own issues.  Some of the more interesting ways to use C# have only begun to emerge as Microsoft begins releasing some of the technology they've developed as part of their Singularity project.  While this section does include links to some things still in R&D, our primary focus will be on the underlying principles of what is in production use today.  Unlike the programming section above, we won't bother linking intro tutorials on C# and the like.  Instead we'll focus on the underlying technologies and concepts.
 +
 +
==Online==
 +
 +
The Introduction to MSIL by Kenny Kerr is a very nice set of tutorials on MSIL, the bytecode Visual Studio generates for .NET applications.  While learning MSIL is not essential to learning how to use .NET, it is somewhat analogous to learning assembly in order to understand the foundations of C.  The articles are in reverse order, bottom to top.
 +
 +
http://weblogs.asp.net/kennykerr/archive/tags/Introduction+to+MSIL/default.aspx -Intermediate/Advanced

Revision as of 01:08, 17 June 2007

This is a work in progress by Z98

This page contains a list of reference materials separated by topic. Most are relevant to ReactOS development and several others are related to Microsoft(C) technologies. They have been separated by category so you can better choose what materials are of interest to you.

Programming

Before you can begin programming an operating system, you need to know how to program. The following are references and tutorials that one can use to learn various principles. As ReactOS uses primary C, C++, and Assembly, we will only cover those in this section. The Assembly languages we will cover will be for Intel/AMD and PowerPC, as those are the only architectures ReactOS has code for. For C# and .NET related matters, scroll downwards. Each reference will be ranked as Introductory, Intermediate, or Advanced. Introductory assumes no knowledge of programming, Intermediate assumes you know how to use the language in question, and Advanced covers some of the more tricky topics in programming. Some may be more than one and a rare few will cover topics from all three.

Online

A general C++ tutorial that covers the first basic program to more advanced topics like templates.

http://www.cplusplus.com/doc/tutorial/ -Introductory/Intermediate

Pointers are some of the trickiest things to work with in C/C++. This tutorial provides examples of various techniques that take advantage of them.

http://www.newty.de/fpt/index.html -Intermediate/Advanced

A very nice reference to the C and C++ Standard Libraries. In order to do anything substantial or even trivial, you're likely to be using things from the Standard Libraries.

http://www.cppreference.com/index.html -Intermediate/Advanced

An introduction to IBM's PowerPC. If you've never seen assembly code before, I'd advise you start with learning the assembly for a RISC architecture like the PPC.

http://home-3.tiscali.nl/~solognt/codingstuff/ppc_cursus.html -Intermediate

These two are guides to Intel's assembly language. Both have their strengths and weaknesses, but they seem to complement each other well.

http://www.drpaulcarter.com/pcasm/index.php -Intermediate
http://savannah.nongnu.org/projects/pgubook/ -Intermediate

A fairly verbose win32 tutorial. There isn't a lot of meat in it, but it provides a basic understanding of how the Windows API operates.

http://www.winprog.org/tutorial/ -Intermediate

SEH is how exceptions are handled in Windows. If you want to do system programming, you're going to need to learn it.

http://www.microsoft.com/msj/0197/exception/exception.aspx -Advanced

Books

The book for the Windows API. ReactOS uses the win32 API extensively for any of its own graphical applications as well as support the various win32 applications written by third parties.

Programming Windows, 5th Edition ISBN 1-5723-1995-X -Intermediate/Advanced

The book for using the Microsoft Foundation Classes. While ReactOS does not support MFC, we could potentially do so in the future if someone were to implement it. Of course, one would have to be thoroughly familiar with MFC to do so.

Programming Windows with MFC ISBN 1-5723-1695-0 -Intermediate/Advanced

Operating Systems

The references here are tagged as Introductory, Intermediate, or Advanced. However, the tags are in the context of operating system knowledge, not general computer science knowledge. In general, one should be at the Intermediate for programming to fully understand the Introductory material here. Introductory material tends to be concept explanations. By the time implementation begins being covered in depth, we're in the Intermediate range.

Online

An excellent overview and introduction to the principles behind operating systems. This link contains much of the information the Minix OS book also has, but of course does not include OS specific implementations, just generalized ones. If you want an introduction to operating systems, this is the page to start with.

http://pages.cs.wisc.edu/~solomon/cs537/notes.html -Introductory

This explains the principles behind how a computer boots into an operating system. It doesn't delve into the code behind it, but provides the general outline of what is going on.

http://www.osdever.net/tutorials/booting_process.php -Introductory

A tutorial on how to write your own simple kernel. Some of this won't make much sense unless you're familiar with the Introductory materials.

http://www.osdever.net/bkerndev/index.php -Intermediate

Books

A book that covers the theory behind operating systems and also examines their implementation in Minix. It's a great book for learning the fundamentals and immediately delve into how they're transformed into code.

Operating Systems: Design and Implementation (The Minix Book) ISBN 0-4716-9466-5 -Introductory/Intermediate

The book for learning about the Windows operating system. This book covers 2000, XP, and Server 2003.

Windows Internals, Fourth Edition ISBN 0-7356-1917-4 -Intermediate/Advanced

This is perhaps the only book that examines the internals of the NTFS file system.

Windows NT File System Internals ISBN 1-5659-2249-2 -Advanced

WDM is the driver model used in 2000, XP, and Vista, though Vista is slowly transitioning it out. As ReactOS' aim is for XP compatibility, we will also be implementing WDM.

Programming the Microsoft Windows Driver Model, Second Edition ISBN 0-7356-1803-8 -Advanced

The new driver model for Windows Vista. As Microsoft has tied in DirectX 10 to this, ReactOS will eventually need to implement it.

Developing Drivers with the Windows Driver Foundation ISBN 0-73-562374-0 -Advanced

.NET

While ReactOS does not have any components to support .NET, it is the future of Windows application programming and will have to be dealt with. .NET is a remarkable piece of technology, though not without its own issues. Some of the more interesting ways to use C# have only begun to emerge as Microsoft begins releasing some of the technology they've developed as part of their Singularity project. While this section does include links to some things still in R&D, our primary focus will be on the underlying principles of what is in production use today. Unlike the programming section above, we won't bother linking intro tutorials on C# and the like. Instead we'll focus on the underlying technologies and concepts.

Online

The Introduction to MSIL by Kenny Kerr is a very nice set of tutorials on MSIL, the bytecode Visual Studio generates for .NET applications. While learning MSIL is not essential to learning how to use .NET, it is somewhat analogous to learning assembly in order to understand the foundations of C. The articles are in reverse order, bottom to top.

http://weblogs.asp.net/kennykerr/archive/tags/Introduction+to+MSIL/default.aspx -Intermediate/Advanced