<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>mosa Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/mosa/Wiki/View.aspx?title=Home</link><description>mosa Wiki Rss Description</description><item><title>Updated Wiki: refactor compiler instruction mechanisms to use a flyweight pattern and fixed size structures</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=refactor compiler instruction mechanisms to use a flyweight pattern and fixed size structures&amp;version=1</link><description>&lt;div class="wikidoc"&gt;The compiler currently creates an instance of an instruction derived object at various points in the pipeline. Mostly this happens during source analysis (IL decoding), transformations from IL to IR and IR to x86 and at various points in between. While this makes the code easily written, it also has some issues - mostly with performance and non-deterministic memory usage.&lt;br /&gt;&lt;br /&gt;A high priority change in 0.2 is to split the instructions into two pieces: The data and the logic (platform specific) - in a lot of cases, this will not cause the allocation of additional objects during stage transformations. In some cases it will. But mostly this will reduce the currently large number of virtual method calls and memory consumption.&lt;br /&gt;&lt;br /&gt;One core idea is to make the current instruction objects immutable singletons, e.g. they will not contain changeable data and will not be instantiated more than once.&lt;br /&gt;&lt;br /&gt;But first the new InstructionData type:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
public struct InstructionData
{
  // Reference to the instruction in this slot
  private readonly Instruction instruction;
  // The destination operand of the instruction (where the result is placed into)
  private readonly Operand destination;
  // The first parameter to the instruction
  private readonly Operation first;
  // The second parameter to the instruction
  private readonly Operand second;
  // The source line, IL offset or something else to be able to map debug information
  private readonly int sourceLine;

  // Methods and ctors left out for clarity.
}
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When a method is compiled from IL, it is currently represented as a list of instructions. In the future this will build an InstructionCollection, which consists of a list of InstructionData structures. This structure holds a reference to the instruction in its place and provides parameter data for the instruction itself. The user will only work with the InstructionData structure. Using generics and a value type allows the entire list to be allocated at once including space for all operands.&lt;br /&gt;&lt;br /&gt;Some IL instructions use more than 3 operands. In this case, the instruction data structure shall hold the first three operands and the instruction shall hold the remaining operands. In this (and only this) case the Instruction will be allocated too.&lt;br /&gt;&lt;br /&gt;The InstructionData value type is immutable, which means an existing instance will never change. This is important for some code analysis passes. In order to modify an InstructionData, it will be overwritten with an entirely new InstructionData instance.&lt;br /&gt;&lt;br /&gt;All changes to an instruction happen through an InstructionCollection, which also maintains bits, which indicate if the data flow graphs or control flow graphs need to be rebuilt.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>__grover</author><pubDate>Sat, 25 Jul 2009 23:38:15 GMT</pubDate><guid isPermaLink="false">Updated Wiki: refactor compiler instruction mechanisms to use a flyweight pattern and fixed size structures 20090725113815P</guid></item><item><title>Updated Wiki: Home</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Home&amp;version=17</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Managed Operating System Alliance (MOSA) Framework&lt;/h1&gt;
The Managed Operating System Alliance (MOSA) Framework is a set of tools, specifications and source code to foster development of managed operating systems based on the Common Intermediate Language. The Framework is divided into:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Compiler%20Framework"&gt;MOSA Compiler Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Framework"&gt;MOSA Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Tools"&gt;MOSA Tools&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
More questions are answered in our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=FAQ"&gt;FAQ&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;License&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The projects created by the Managed Operating System Alliance are open source and released under the terms of the &lt;a href="http://www.codeplex.com/mosa/license" class="externalLink"&gt;New BSD License&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. Read more about our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=License"&gt;License&lt;/a&gt; policy.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Contact &amp;amp; Community&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Our project status can be seen at &lt;a href="https://www.ohloh.net/projects/mosa-project" class="externalLink"&gt;Ohloh&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://cia.vc/stats/project/MOSA" class="externalLink"&gt;CIA&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  Also, stay up to date by &lt;a href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml" class="externalLink"&gt;subscribing&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; to our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=developer%20blogs"&gt;developer blogs&lt;/a&gt;! You can read the &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Newsletter%201"&gt;current newsletter&lt;/a&gt; or previous newsletters in the &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Newsletter%20Archive"&gt;Newsletter Archive&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;IRC&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The MOSA project also has an IRC channel &lt;a href="http://webchat.freenode.net/?channels=mosa" class="externalLink"&gt;#mosa&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; on Freenode’s IRC network (irc.freenode.net). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Contributing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The MOSA project needs contributions in all areas. Contributions can be comments on various specifications we'll publish, the default implementations we provide, supporting other projects, which use MOSA components as well as help on the wikis. Please read our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Contributer%20Information"&gt;Contributer Information&lt;/a&gt; page for additional information.&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>tgiphil</author><pubDate>Sat, 25 Jul 2009 16:53:51 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090725045351P</guid></item><item><title>Updated Wiki: Home</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Home&amp;version=16</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Managed Operating System Alliance (MOSA) Framework&lt;/h1&gt;
The Managed Operating System Alliance (MOSA) Framework is a set of tools, specifications and source code to foster development of managed operating systems based on the Common Intermediate Language. The Framework is divided into:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Compiler%20Framework"&gt;MOSA Compiler Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Framework"&gt;MOSA Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Tools"&gt;MOSA Tools&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
More questions are answered in our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=FAQ"&gt;FAQ&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;License&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The projects created by the Managed Operating System Alliance are open source and released under the terms of the &lt;a href="http://www.codeplex.com/mosa/license" class="externalLink"&gt;New BSD License&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. Read more about our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=License"&gt;License&lt;/a&gt; policy.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Contact &amp;amp; Community&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Our project status can be seen at &lt;a href="https://www.ohloh.net/projects/mosa-project" class="externalLink"&gt;Ohloh&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://cia.vc/stats/project/MOSA" class="externalLink"&gt;CIA&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.  Also, stay up to date by &lt;a href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml" class="externalLink"&gt;subscribing&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; to our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=developer%20blogs"&gt;developer blogs&lt;/a&gt;! You can read the &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Newsletter%201"&gt;current newsletter&lt;/a&gt; or previous newsletters in the &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Newsletter%20Archive"&gt;Newsletter Archive&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;IRC&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The MOSA project also has an IRC channel &lt;a href="http://embed.mibbit.com/?server=irc.freenode.net&amp;amp;channel=%23mosa&amp;amp;forcePrompt=true" class="externalLink"&gt;#mosa&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; on Freenode’s IRC network (irc.freenode.net). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Contributing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The MOSA project needs contributions in all areas. Contributions can be comments on various specifications we'll publish, the default implementations we provide, supporting other projects, which use MOSA components as well as help on the wikis. Please read our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Contributer%20Information"&gt;Contributer Information&lt;/a&gt; page for additional information.&lt;/div&gt;</description><author>tgiphil</author><pubDate>Sun, 21 Jun 2009 17:24:37 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090621052437P</guid></item><item><title>Updated Wiki: Create Boot Image Tool</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Create Boot Image Tool&amp;version=4</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Create Boot Image Tool&lt;/h1&gt;
&lt;br /&gt;The &amp;quot;CreateBootImage&amp;quot; tool is used to create bootable disk images containing the MOSA kernel. &lt;br /&gt;&lt;br /&gt;The tool accepts two command line options:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CreateBootImage.exe &amp;lt;configuration file&amp;gt; &amp;lt;destination image file&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Below is sample configuration file:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=mosa&amp;DownloadId=67071" alt="config.png" /&gt;&lt;br /&gt;&lt;br /&gt;The configuration file is a list of options, one per line, with arguments seperated by a tab. The following options are supported:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;option&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;b&gt;Arguments&lt;/b&gt;  &lt;/td&gt;&lt;td&gt; &lt;b&gt;Description&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-volume&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Volume Name &lt;/td&gt;&lt;td&gt; Set the volume name for the first partition &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-blocks&lt;/b&gt; &lt;/td&gt;&lt;td&gt; # of Blocks &lt;/td&gt;&lt;td&gt; Set the number of 512-byte blocks &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat12&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT12 file system &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat16&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT16 file system &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat32&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT32 file system (untested) &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-vhd&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in VHD (Virtual PC/Virtual Server) format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-vdi&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in VDI (VirtualBox) format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-img&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in IMG format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-syslinux&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Patch disk image for syslinux &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-mbr&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename &lt;/td&gt;&lt;td&gt; Use file for Master Boot Record &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-boot&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename &lt;/td&gt;&lt;td&gt; Use file for Boot Record &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-file&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename, Destination &lt;/td&gt;&lt;td&gt; Include file in file system &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The tool can create disk images for the following emulators:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;Emulator&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;b&gt;File Format&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Virtual PC 2004/2007 &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Virtual Server &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; VMware &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; VirtualBox &lt;/td&gt;&lt;td&gt; .VDI &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; QEMU &lt;/td&gt;&lt;td&gt; .IMG &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Raw Image &lt;/td&gt;&lt;td&gt; .IMG &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;</description><author>tgiphil</author><pubDate>Thu, 30 Apr 2009 05:53:52 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Create Boot Image Tool 20090430055352A</guid></item><item><title>Updated Wiki: Create Boot Image Tool</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Create Boot Image Tool&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Create Boot Image Tool&lt;/h1&gt;
&lt;br /&gt;The &amp;quot;CreateBootImage&amp;quot; tool is used to create bootable disk images containing the MOSA kernel. &lt;br /&gt;&lt;br /&gt;The tool accepts two command line options:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CreateBootImage.exe &amp;lt;configuration file&amp;gt; &amp;lt;destination image file&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Below is sample configuration file:&lt;br /&gt;&lt;br /&gt;&lt;span class="unresolved"&gt;Cannot resolve image macro, invalid image name or id.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The configuration file is a list of options, one per line, with arguments seperated by a tab. The following options are supported:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;option&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;b&gt;Arguments&lt;/b&gt;  &lt;/td&gt;&lt;td&gt; &lt;b&gt;Description&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-volume&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Volume Name &lt;/td&gt;&lt;td&gt; Set the volume name for the first partition &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-blocks&lt;/b&gt; &lt;/td&gt;&lt;td&gt; # of Blocks &lt;/td&gt;&lt;td&gt; Set the number of 512-byte blocks &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat12&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT12 file system &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat16&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT16 file system &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat32&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT32 file system (untested) &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-vhd&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in VHD (Virtual PC/Virtual Server) format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-vdi&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in VDI (VirtualBox) format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-img&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in IMG format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-syslinux&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Patch disk image for syslinux &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-mbr&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename &lt;/td&gt;&lt;td&gt; Use file for Master Boot Record &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-boot&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename &lt;/td&gt;&lt;td&gt; Use file for Boot Record &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-file&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename, Destination &lt;/td&gt;&lt;td&gt; Include file in file system &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The tool can create disk images for the following emulators:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;Emulator&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;b&gt;File Format&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Virtual PC 2004/2007 &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Virtual Server &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; VMware &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; VirtualBox &lt;/td&gt;&lt;td&gt; .VDI &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; QEMU &lt;/td&gt;&lt;td&gt; .IMG &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Raw Image &lt;/td&gt;&lt;td&gt; .IMG &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;</description><author>tgiphil</author><pubDate>Thu, 30 Apr 2009 05:53:30 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Create Boot Image Tool 20090430055330A</guid></item><item><title>Updated Wiki: Create Boot Image Tool</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Create Boot Image Tool&amp;version=2</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Create Boot Image Tool&lt;/h1&gt;
&lt;br /&gt;The &amp;quot;CreateBootImage&amp;quot; tool is used to create bootable disk images containing the MOSA kernel. &lt;br /&gt;&lt;br /&gt;The tool accepts two command line options:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CreateBootImage.exe &amp;lt;configuration file&amp;gt; &amp;lt;destination image file&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Below is sample configuration file:&lt;br /&gt;&lt;br /&gt;&lt;span class="unresolved"&gt;Cannot resolve image macro, invalid image name or id.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The configuration file is a list of options, one per line, with arguments seperated by a tab. The following options are supported:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;option&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;b&gt;Arguments&lt;/b&gt;  &lt;/td&gt;&lt;td&gt; &lt;b&gt;Description&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-volume&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Volume Name &lt;/td&gt;&lt;td&gt; Set the volume name for the first partition &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-blocks&lt;/b&gt; &lt;/td&gt;&lt;td&gt; # of Blocks &lt;/td&gt;&lt;td&gt; Set the number of 512-byte blocks &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat12&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT12 file system &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat16&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT16 file system &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat32&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT32 file system (untested) &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-vhd&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in VHD (Virtual PC/Virtual Server) format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-vdi&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in VDI (VirtualBox) format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-img&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in IMG format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-syslinux&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Patch disk image for syslinux &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-mbr&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename &lt;/td&gt;&lt;td&gt; Use file for Master Boot Record &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-boot&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename &lt;/td&gt;&lt;td&gt; Use file for Boot Record &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-file&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename, Destination &lt;/td&gt;&lt;td&gt; Include file in file system &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The tool can create disk images for the following emulators:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;Emulator&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;b&gt;File Format&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Virtual PC 2004/2007 &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Virtual Server &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; VMware &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; VirtualBox &lt;/td&gt;&lt;td&gt; .VDI &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; QEMU &lt;/td&gt;&lt;td&gt; .IMG &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Raw Image &lt;/td&gt;&lt;td&gt; .IMG &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;</description><author>tgiphil</author><pubDate>Thu, 30 Apr 2009 05:49:22 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Create Boot Image Tool 20090430054922A</guid></item><item><title>Updated Wiki: Create Boot Image Tool</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Create Boot Image Tool&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Create Boot Image Tool&lt;/h1&gt;
&lt;br /&gt;The &amp;quot;CreateBootImage&amp;quot; tool is used to create bootable disk images containing the MOSA kernel. &lt;br /&gt;&lt;br /&gt;The tool accepts two command line options:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CreateBootImage.exe &amp;lt;configuration file&amp;gt; &amp;lt;destination image file&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Below is sample configuration file:&lt;br /&gt;&lt;br /&gt;&lt;span class="unresolved"&gt;Cannot resolve image macro, invalid image name or id.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The configuration file is a list of options, one per line, with arguments seperated by a tab. The following options are supported:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;option&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;b&gt;Arguments&lt;/b&gt;  &lt;/td&gt;&lt;td&gt; &lt;b&gt;Description&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-volume&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Volume Name &lt;/td&gt;&lt;td&gt; Set the volume name for the first partition &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-blocks&lt;/b&gt; &lt;/td&gt;&lt;td&gt; # of Blocks &lt;/td&gt;&lt;td&gt; Set the number of 512-byte blocks &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat12&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT12 file system &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat16&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT16 file system &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat32&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT32 file system (untested) &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-vhd&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in VHD (Virtual PC/Virtual Server) format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-vdi&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in VDI (VirtualBox) format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-img&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in IMG format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-syslinux&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Patch disk image for syslinux &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-mbr&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename &lt;/td&gt;&lt;td&gt; Use file for Master Boot Record &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-boot&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename &lt;/td&gt;&lt;td&gt; Use file for Boot Record &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-file&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename, Destination &lt;/td&gt;&lt;td&gt; Include file in file system &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The tool can create disk images for the following emulators:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;Emulator&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;b&gt;File Format&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Virtual PC 2004/2007 &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Virtual Server &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; VMware &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; VirtualBox &lt;/td&gt;&lt;td&gt; .VDI &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; QEMU &lt;/td&gt;&lt;td&gt; .IMG &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Raw Image &lt;/td&gt;&lt;td&gt; .IMG &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;</description><author>tgiphil</author><pubDate>Thu, 30 Apr 2009 05:48:51 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Create Boot Image Tool 20090430054851A</guid></item><item><title>Updated Wiki: MOSA Tools</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA Tools&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;MOSA Tools&lt;/h1&gt;
&lt;br /&gt;The MOSA project is developing a set of tools along with its core operating system components. This page provides quick links to descriptions of all MOSA tools.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=mosacl&amp;referringTitle=Home"&gt;The MOSA Ahead-Of-Time Compiler &amp;#40;mosacl&amp;#41;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Create%20Boot%20Image%20Tool&amp;referringTitle=Home"&gt;The Create Boot Image Tool&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><author>tgiphil</author><pubDate>Thu, 30 Apr 2009 05:48:32 GMT</pubDate><guid isPermaLink="false">Updated Wiki: MOSA Tools 20090430054832A</guid></item><item><title>Updated Wiki: Make Boot Image Tool</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Make Boot Image Tool&amp;version=4</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Create Boot Image Tool&lt;/h1&gt;
&lt;br /&gt;The &amp;quot;CreateBootImage&amp;quot; tool is used to create bootable disk images containing the MOSA kernel. &lt;br /&gt;&lt;br /&gt;The tool accepts two command line options:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CreateBootImage.exe &amp;lt;configuration file&amp;gt; &amp;lt;destination image file&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Below is sample configuration file:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=mosa&amp;DownloadId=52701" alt="config.png" /&gt;&lt;br /&gt;&lt;br /&gt;The configuration file is a list of options, one per line, with arguments seperated by a tab. The following options are supported:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;option&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;b&gt;Arguments&lt;/b&gt;  &lt;/td&gt;&lt;td&gt; &lt;b&gt;Description&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-volume&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Volume Name &lt;/td&gt;&lt;td&gt; Set the volume name for the first partition &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-blocks&lt;/b&gt; &lt;/td&gt;&lt;td&gt; # of Blocks &lt;/td&gt;&lt;td&gt; Set the number of 512-byte blocks &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat12&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT12 file system &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat16&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT16 file system &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-fat32&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Use FAT32 file system (untested) &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-vhd&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in VHD (Virtual PC/Virtual Server) format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-vdi&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in VDI (VirtualBox) format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-img&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Create image in IMG format &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-syslinux&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; Patch disk image for syslinux &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-mbr&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename &lt;/td&gt;&lt;td&gt; Use file for Master Boot Record &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-boot&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename &lt;/td&gt;&lt;td&gt; Use file for Boot Record &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; &lt;b&gt;-file&lt;/b&gt; &lt;/td&gt;&lt;td&gt; Filename, Destination &lt;/td&gt;&lt;td&gt; Include file in file system &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The tool can create disk images for the following emulators:&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt; &lt;b&gt;Emulator&lt;/b&gt; &lt;/td&gt;&lt;td&gt; &lt;b&gt;File Format&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Virtual PC 2004/2007 &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Virtual Server &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; VMware &lt;/td&gt;&lt;td&gt; .VHD &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; VirtualBox &lt;/td&gt;&lt;td&gt; .VDI &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; QEMU &lt;/td&gt;&lt;td&gt; .IMG &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt; Raw Image &lt;/td&gt;&lt;td&gt; .IMG &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;</description><author>tgiphil</author><pubDate>Thu, 30 Apr 2009 05:47:41 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Make Boot Image Tool 20090430054741A</guid></item><item><title>Updated Wiki: developer blogs</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=developer blogs&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;MOSA Development Blog Entries&lt;/h1&gt;
&lt;br /&gt;&lt;div class="rss"&gt;&lt;div class="accentbar"&gt;&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;MOSA Dev Blogs News Feed&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://illuminus86.blogspot.com/2009/04/microsoft-open-sources-their-common.html"&gt;illuminus: Microsoft Open-Sources their Common Compiler Infrastructure Metadata Tools&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Friday, April 17, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span&gt;&lt;p&gt;…which here at &lt;a rel="nofollow" target="_blank" href='http://www.mosa-project.org/'&gt;MOSA&lt;/a&gt; is good news. Included in this toolset is a full API, mostly managed, for reading/writing &lt;a rel="nofollow" target="_blank" href='http://en.wikipedia.org/wiki/Common_Intermediate_Language'&gt;CIL&lt;/a&gt;&lt;br /&gt; &lt;a rel="nofollow" target="_blank" href='http://en.wikipedia.org/wiki/Portable_Executable'&gt;PE&lt;/a&gt; files, along with reading/writing Managed &lt;a rel="nofollow" target="_blank" href='http://en.wikipedia.org/wiki/Program_database'&gt;PDB&lt;/a&gt; files.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The news &lt;a rel="nofollow" target="_blank" href='http://blogs.zdnet.com/microsoft/?p=2535'&gt;comes from ZDNet&lt;/a&gt;, but you can see it for yourself &lt;a rel="nofollow" target="_blank" href='http://ccimetadata.codeplex.com/'&gt;at CodePlex&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;At MOSA we are still trying to analyze the feature set. The PDB &lt;em&gt;reading&lt;/em&gt; functionality is fully managed and supposedly applies to multiple PDB format variants. The PDB &lt;em&gt;writing&lt;/em&gt; functionality calls out to unmanaged code and is most likely not useful.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;However, the BSD-compatible MS-PL this is licensed under means we can cannibalize the reading functionality and use it to learn the format well enough to be able to write PDB-writing functionality as well, for both the managed and unmanaged PDB variants.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/432268364273035994-7317310361029470598?l=illuminus86.blogspot.com'/&gt;&lt;/div&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://illuminus86.blogspot.com/2009/04/post-for-mosa.html"&gt;illuminus: A post-a for MOSA&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Thursday, April 16, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;This post is really meant to be a test. I'm trying to get Yahoo Pipes working for me to aggregate the blogs of the MOSA developers.&lt;br /&gt;&lt;br /&gt;We shall see...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/432268364273035994-2644772451915889393?l=illuminus86.blogspot.com'/&gt;&lt;/div&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/logo-suggestions"&gt;Kintaro: Logo suggestions&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Monday, March 30, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;So finally we have the logo's structure finished. Only thing left is to decide on a good colorscheme.&lt;br /&gt;&lt;br /&gt;I made some designs, &lt;a rel="nofollow" target="_blank" href="http://picasaweb.google.com/mail.simon.wollwage/MosaLogos"&gt;take a look for yourself&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/slowly-beating-mono"&gt;Kintaro: Slowly beating mono&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Tuesday, March 17, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;As I've mentioned in &lt;a rel="nofollow" target="_blank" href="http://think-in-co.de/blog/strange-mono-behaviour"&gt;this post&lt;/a&gt; earlier, we encountered some problems when trying to run mosa compiled by mono.&lt;br /&gt;&lt;br /&gt;As of today, mosacl is capable of compiling without crashing, but the created binary won't boot. So now I have to go back and digg deep down into asm code again.&lt;br /&gt;&lt;br /&gt;Happy hacking is the new lifestyle :)&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/pictor-progress"&gt;Kintaro: Pictor progress&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Friday, March 13, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;Sorry for the long downtime and no postings, I encountered some problems with the server. After several updates and bufixes it's up and running again.&lt;br /&gt;&lt;br /&gt;To make up for the long downtime I bring you some good news!&lt;br /&gt;&lt;br /&gt;I worked on Pictor the last couple of days and added Pictor.UI, as a first rudimentary User Interface.&lt;br /&gt;&lt;br /&gt;To see it in action, just take a look at the video below.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://think-in-co.de/blog/pictor-progress"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/cutting-it-down"&gt;Kintaro: Cutting it down&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Wednesday, February 25, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;We're making progresss in making version 0.1 stable. We had 775 failed testcases 2 days ago and were able to clean them out down to 283 failed testcases.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We're quite busy cleaning the code, removing bugs and doing some refactoring. This is a good sign (at least I hope so).&lt;br /&gt;&lt;br /&gt;0.1 Release shouldn't be that far away anymore.&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/strange-mono-behaviour"&gt;Kintaro: Strange mono behaviour&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Saturday, February 21, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;While trying to get MOSA running on mono, I've encountered some strange behaviour.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;When running mosacl.exe on Mosa.HelloWorld.exe compiled by Windows .NET everything is fine. When, instead, running mosacl.exe on Mosa.HelloWorld.exe compiled by mono, the compiler crashes trying to parse obscure instructions (like &lt;/p&gt;&lt;br /&gt;&lt;pre&gt;mov const, const&lt;/pre&gt;&lt;p&gt;, which makes no sense at all).&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I took a look at the IL code produced by both, Microsoft .NET and mono, and they differ in various ways.&lt;/p&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;b&gt;MS .NET&lt;/b&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;b&gt;mono&lt;/b&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;br /&gt;&lt;td valign="top"&gt;&lt;br /&gt;&lt;pre&gt;IL_0000: nop &lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://think-in-co.de/blog/strange-mono-behaviour"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/w3c-compliant"&gt;Kintaro: W3C Compliant&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Wednesday, February 11, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;After some bugfixing this site is finally W3C XHTML 1.0 compliant. Check for yourself &lt;a rel="nofollow" target="_blank" href="http://validator.w3.org/check?uri=http%3A%2F%2Fthink-in-co.de%2F&amp;amp;charset=%28detect+automatically%29&amp;amp;doctype=Inline&amp;amp;group=0"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/documentation-online"&gt;Kintaro: Documentation online&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Tuesday, February 10, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;Ok, so the script is working, the cronjob is running and the documentation is now online at &lt;a rel="nofollow" target="_blank" href="http://mosadoc.think-in-co.de" title="http://mosadoc.think-in-co.de"&gt;http://mosadoc.think-in-co.de&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/automated-documentation"&gt;Kintaro: Automated documentation&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Monday, February 09, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;At the moment I'm setting up doxygen and a daily cronjob to automatically fetch the newest source code from MOSA every day at midnight and build the new documentation.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It'll be available at &lt;a rel="nofollow" target="_blank" href="http://mosadoc.think-in-co.de" title="http://mosadoc.think-in-co.de"&gt;http://mosadoc.think-in-co.de&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/elf-linker-survey-3-section-header"&gt;Kintaro: ELF Linker Survey #3 - The Section Header&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Monday, February 09, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;Piece by piece we’re hunting it down here. As we know from Survey #1, the ELF Header contains an offset to the section header table. The “table” is just an array of section header’s. What are they used for? As the sections may be spread throughout the file, we need some kind of information where each section starts, ends, what type of section it is, and so on.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So ELF provides us with section headers. Their format looks like this:&lt;/p&gt;&lt;br /&gt;&lt;div style="text-align:center;"&gt;&lt;img src="http://mosadev.files.wordpress.com/2009/01/classdiagram3.png?w=187&amp;amp;h=307" alt="Diagram"/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://think-in-co.de/blog/elf-linker-survey-3-section-header"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/twittering-again"&gt;Kintaro: Twittering again&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Monday, February 09, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;Ok, now I know why I liked Drupal so much when I first toyed around with it months ago. hould have sticked to Drupal since then.&lt;br /&gt;&lt;br /&gt;Thanks to the modules, you'll be informed of new posts via Twitter. Just follow my Twitter account "MrKintaro".&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/mailserver"&gt;Kintaro: Mailserver&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Monday, February 09, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;Finally the mailserver is up and running at &lt;a rel="nofollow" target="_blank" href="http://mail.think-in-co.de/" title="http://mail.think-in-co.de/"&gt;http://mail.think-in-co.de/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Took me long enough to get to that point. Everything worked fine, but postfix seemd to have problems to connect.&lt;br /&gt;&lt;br /&gt;After searching and searching I've found out that postfix was trying to find /etc/aliased.db, which wasn't there, because /usr/bin/newaliases has never been invoked (didn't do it because I don't map local users to mailboxes).&lt;br /&gt;&lt;br /&gt;So, a short&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;# /usr/bin/newaliases&lt;/pre&gt;&lt;p&gt;did the job.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Btw, here a little info about the new server:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://think-in-co.de/blog/mailserver"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/elf-linker-survey-2-program-header"&gt;Kintaro: ELF Linker Survey #2 - The Program Header&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Monday, February 09, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;Ok, we’ve covered the general file format and the ELF header in the previous section. So now we’ll take care of the program header. There’s not much in there, just take a look:&lt;/p&gt;&lt;br /&gt;&lt;div style="text-align:center;"&gt;&lt;img src="http://mosadev.files.wordpress.com/2009/01/classdiagram2.png?w=187&amp;amp;h=260" alt="Diagram"/&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://think-in-co.de/blog/elf-linker-survey-2-program-header"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/content/what-do-you-think-mosa"&gt;Kintaro: What do you think of MOSA&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Monday, February 09, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;* Hell yeah, get it done! I wanna use it!&lt;br /&gt;* Hm, I&amp;#039;ll take a look at it when it&amp;#039;s done&lt;br /&gt;* I hate it&lt;br /&gt;* I don&amp;#039;t mind&lt;br /&gt;* MOSA? What&amp;#039;s MOSA?&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/blog/elf-linker-survey-1-header-format"&gt;Kintaro: ELF Linker Survey #1 - The Header Format&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Monday, February 09, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;The MOSA compiler is already able to produce valid PE binaries. But as PE isn’t the only binary format that’s out there, we’re alo working on an ELF Linker.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In this series of articles I’ll describe the format, occured problems, etc that I had to tackle during development. So let’s get this thing started with the format itself and especially it’s header. In picture 1 below, you can see a rough sketch for the ELF file format. Each ELF file contains a header, program header, a section header table, section headers, sections, and so on.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://think-in-co.de/blog/elf-linker-survey-1-header-format"&gt;read more&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://think-in-co.de/content/hi-back-again"&gt;Kintaro: Hi &amp; back again&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Sunday, February 08, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://www.michaelruck.de/2009/01/debug-symbols-for-mosa-4-pdb-file.html"&gt;Michael: Debug Symbols for MOSA #4 - PDB File Format&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Sunday, January 18, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;I'll continue my series with this posting about the PDB file format. There are some places on the net, which already describe the file format. However I've found some inaccuracies in most places - probably due to the fact that the format itself is not open and everyone performs some kind of interpretation of the data they see. Again, take this post with a grain of salt. I'm going to talk about the managed PDB files explicitly, so expect some differences compared to native code PDB files.&lt;/p&gt;&lt;h5&gt;Test Code&lt;/h5&gt;&lt;p&gt;Before we'll dive into the format itself I want to show you the sample code I'm going to use to describe the format with. The following C# source is compiled with debug support in order to generate a PDB file. &lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:39d789b7-e6b8-4b10-b6db-c331dc722026" style="PADDING-RIGHT:0px;DISPLAY:inline;PADDING-LEFT:0px;FLOAT:none;PADDING-BOTTOM:0px;MARGIN:0px;WIDTH:733px;PADDING-TOP:0px;"&gt;&lt;pre style="WIDTH:100%;"&gt;&lt;span style="color:#999999;"&gt;1&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt;&lt;span style="color:#000000;"&gt; System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;2&lt;/span&gt; &lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;3&lt;/span&gt; &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt;&lt;span style="color:#000000;"&gt; PdbExample&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;4&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;5&lt;/span&gt; &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; Program&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;6&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;7&lt;/span&gt; &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; Main(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt;[] args)&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;8&lt;/span&gt; &lt;span style="color:#000000;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;9&lt;/span&gt; &lt;span style="color:#000000;"&gt;Console.WriteLine(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;Hello World!&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;10&lt;/span&gt; &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;for&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="color:#000000;"&gt; i &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800080;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;; i &lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800080;"&gt;10&lt;/span&gt;&lt;span style="color:#000000;"&gt;; i&lt;/span&gt;&lt;span style="color:#000000;"&gt;++&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;11&lt;/span&gt; &lt;span style="color:#000000;"&gt;Console.WriteLine(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;Count: {0}&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;, i);&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;12&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;13&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;14&lt;/span&gt; &lt;span style="color:#000000;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#999999;"&gt;15&lt;/span&gt; &lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;The examples shown in this series use the C# 3.5 compiler, however I believe the format hasn't changed since C# 1.0.&lt;br /&gt;&lt;br /&gt;&lt;h5&gt;PDB Header&lt;/h5&gt;&lt;p&gt;PDB files start with a pretty large header of 32 bytes, which can be used to identify the file. The following dump shows a header of the resulting PDB file: &lt;div class="wlWriterSmartContent" id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:01ec04b2-379e-407a-828a-c5f4524a2653" style="PADDING-RIGHT:0px;DISPLAY:inline;PADDING-LEFT:0px;FLOAT:none;PADDING-BOTTOM:0px;MARGIN:0px;PADDING-TOP:0px;"&gt;&lt;pre style="WIDTH:100%;"&gt;&lt;span style="color:#000000;"&gt;00000000&lt;/span&gt;&lt;span style="color:#000000;"&gt; 4D &lt;/span&gt;&lt;span style="color:#000000;"&gt;69&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;63&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;72&lt;/span&gt;&lt;span style="color:#000000;"&gt; 6F &lt;/span&gt;&lt;span style="color:#000000;"&gt;73&lt;/span&gt;&lt;span style="color:#000000;"&gt; 6F &lt;/span&gt;&lt;span style="color:#000000;"&gt;66&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;74&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;20&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;43&lt;/span&gt;&lt;span style="color:#000000;"&gt; 2F &lt;/span&gt;&lt;span style="color:#000000;"&gt;43&lt;/span&gt;&lt;span style="color:#000000;"&gt; 2B 2B &lt;/span&gt;&lt;span style="color:#000000;"&gt;20&lt;/span&gt;&lt;span style="color:#000000;"&gt; Microsoft C&lt;/span&gt;&lt;span style="color:#000000;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;"&gt;C&lt;/span&gt;&lt;span style="color:#000000;"&gt;++&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;00000010&lt;/span&gt;&lt;span style="color:#000000;"&gt; 4D &lt;/span&gt;&lt;span style="color:#000000;"&gt;53&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;46&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;20&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;37&lt;/span&gt;&lt;span style="color:#000000;"&gt; 2E &lt;/span&gt;&lt;span style="color:#000000;"&gt;30&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;30&lt;/span&gt;&lt;span style="color:#000000;"&gt; 0D 0A 1A &lt;/span&gt;&lt;span style="color:#000000;"&gt;44&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;53&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;00&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;00&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;00&lt;/span&gt;&lt;span style="color:#000000;"&gt; MSF &lt;/span&gt;&lt;span style="color:#000000;"&gt;7.00&lt;/span&gt;&lt;span style="color:#000000;"&gt;...&lt;/span&gt;&lt;span style="color:#000000;"&gt;DS&lt;/span&gt;&lt;span style="color:#000000;"&gt;...&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The header has some interesting properties. First it is an ASCII string, which contains a line break and is zero terminated. This makes it possible to pass a PDB file to the DOS command 'type' and be able to see the version of the PDB file we have:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:F2210F5F-69EB-4d4c-AFF7-B8A050E9CC72:1d433972-238e-4b1c-b0bf-1e63130e2271" style="PADDING-RIGHT:0px;DISPLAY:inline;PADDING-LEFT:0px;FLOAT:none;PADDING-BOTTOM:0px;MARGIN:0px;PADDING-TOP:0px;"&gt;&lt;pre style="WIDTH:100%;"&gt;&lt;span style="color:#000000;"&gt;D:&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#92;&lt;/span&gt;&lt;span style="color:#000000;"&gt;My Projects&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#92;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Tests&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#92;&lt;/span&gt;&lt;span style="color:#000000;"&gt;CSharpConsoleBlog&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#92;&lt;/span&gt;&lt;span style="color:#000000;"&gt;CSharpConsoleBlog&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;type&lt;/span&gt;&lt;span style="color:#000000;"&gt; Program10&lt;/span&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;span style="color:#000000;"&gt;pdb&lt;br /&gt;Microsoft C&lt;/span&gt;&lt;span style="color:#000000;"&gt;/&lt;/span&gt;&lt;span style="color:#000000;"&gt;C&lt;/span&gt;&lt;span style="color:#000000;"&gt;++&lt;/span&gt;&lt;span style="color:#000000;"&gt; MSF &lt;/span&gt;&lt;span style="color:#000000;"&gt;7.00&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;br /&gt;D:&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#92;&lt;/span&gt;&lt;span style="color:#000000;"&gt;My Projects&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#92;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Tests&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#92;&lt;/span&gt;&lt;span style="color:#000000;"&gt;CSharpConsoleBlog&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;#92;&lt;/span&gt;&lt;span style="color:#000000;"&gt;CSharpConsoleBlog&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;You don't get the garbage displayed on the screen but still some valuable information from the file itself. The two letters DS in the header are the initials of Dan Spalding, who owned the linker and much of the PDB code for many years according to &lt;a rel="nofollow" target="_blank" href="http://blogs.msdn.com/andypennell/archive/2005/12/09/502267.aspx"&gt;Andy Penell&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Next, at byte 0x00000020 starts a structure, which contains a lot of settings and provides a lot of information to a PDB reader:&lt;/p&gt;&lt;table style="margin:0;padding:0;border:solid 1px black;" border="1"&gt;&lt;tr&gt;&lt;td&gt;Field&lt;/td&gt;&lt;td&gt;Size&lt;/td&gt;&lt;td&gt;Meaning&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;pageSize&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;The size of a page in the file.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;bitmapPage&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;The page number of the bitmap page.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;filePages&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;The number of pages in the file.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;rootBytes&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;The number of bytes in the root stream.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;reserved&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Unused as far as I know.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;indexPage&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;The page number of the index page.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;p&gt;Ok, so a PDB file is divided into fixed size pages (size in the pageSize field) and there's a bitmap that specifies if a page is in use or not. Sounds familiar? Well, yes it's the same strategy as used for the FAT file system, OLE compound files and in a lot of other areas.&lt;/p&gt;&lt;p&gt;The filePages field can be used to make sure the PDB file is completely available - multiply pageSize with filePages and you should have the size of the PDB file.&lt;/p&gt;&lt;h5&gt;PDB Root Stream&lt;/h5&gt;&lt;p&gt;Using the fields we have right now, we still can't unlock the contents of the PDB file. To get there we need to combine the rootBytes and indexPage fields. The indexPage field points to a page, which contains page numbers of the root stream. So it is an array of 4-byte page numbers, which hold the contents of the root stream in order. To determine the number of entries in the index, you must divide rootBytes by pageSize.&lt;/p&gt;&lt;p&gt;If you read all pages in order of the index, you've read the root stream. The root stream tells us, what is contained in the file. The root stream starts with 4 bytes, which tell the total number of streams in the file. An array of stream lengths is located after the stream count, e.g. each entry in this array corresponds to the length of that stream. What follows next is a page index for all streams, e.g. an array of page numbers for stream #1, an array of page numbers for stream #2 etc. The number of entries is again determined by the length of that stream divided by the page size.&lt;/p&gt;&lt;p&gt;The root stream gives us basically an index of all streams available and how they're spread accross the PDB file.&lt;/p&gt;&lt;p&gt;Starting with the next posting, I'll dive into the important streams in order.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/6043482-7341819317024410120?l=www.michaelruck.de'/&gt;&lt;/div&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://www.michaelruck.de/2009/01/updated-my-blog-style-again.html"&gt;Michael: Updated my blog style again...&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Sunday, January 18, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;Ok, this is going to be the last update for some time. I'll add some more categories for postings I've planned, but this will be it - unless I'll find some more bugs somewhere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/6043482-3670168276938410952?l=www.michaelruck.de'/&gt;&lt;/div&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="entry"&gt;&lt;div class="title"&gt;&lt;a href="http://www.michaelruck.de/2009/01/debug-symbols-for-mosa-3-accessing-pdb.html"&gt;Michael: Debug Symbols for MOSA #3 - Accessing PDB files&lt;/a&gt;&lt;/div&gt;&lt;div class="moreinfo"&gt;&lt;span class="date"&gt;Friday, January 16, 2009&lt;/span&gt; &amp;nbsp;|&amp;nbsp; &lt;span class="source"&gt;From &lt;a target="_blank" href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml"&gt;MOSA Dev Blogs&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;p&gt;In the last post, I wrote about the &lt;a rel="nofollow" target="_blank" href="http://www.michaelruck.de/2009/01/debug-symbols-for-mosa-2-debug-symbol.html"&gt;debug symbol formats&lt;/a&gt; used by Microsoft in recent years. This post is dedicated to tell you, where to look about accessing these files using official APIs. If the world consisted only of Windows, we could stop here. We wouldn't need to understand the file format itself or be able to read the files without the APIs described below. However the world isn't living in monoculture so I'll keep my goal to describe the PDB format in the next posts.&lt;/p&gt;&lt;p&gt;Essentially Microsoft only makes four APIs available to access debugging symbols:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms680321(VS.85).aspx"&gt;Image Helper Library&lt;/a&gt; (included with Windows, not redistributable) &lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms679309%28VS.85%29.aspx"&gt;Debug Help Library&lt;/a&gt; (included with Windows, redistributable, updated versions in the &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx"&gt;Debugging Tools for Windows&lt;/a&gt;) &lt;/li&gt;&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/x93ctkx8%28VS.80%29.aspx"&gt;Debug Interface Access SDK&lt;/a&gt; (included with Visual Studio) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;and the only remaining API is in the .NET &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.symbolstore%28VS.71%29.aspx"&gt;System.Diagnostics.SymbolStore&lt;/a&gt; namespace in mscorlib.&lt;/p&gt;&lt;p&gt;Of all of these APIs the Image Helper Library provides the most features, followed by the Debug Help Library. The later is used by the Microsoft Debuggers to load symbol information. While both of these libraries are regular Win32 DLLs with WINAPI entry points, the Debug Interface Access SDK provides COM objects to access the contents of symbol files. The library is very easy to work with.&lt;/p&gt;&lt;p&gt;As one can easily see these three options don't work outside the Microsoft world, well they don't except for maybe Wine or ReactOS. My first hope was that using the System.Diagnostics.SymbolStore namespace would be sufficient for our purpose of retrieving the symbol information, but again this quickly makes the code a Windows only option.&lt;/p&gt;&lt;p&gt;From &lt;a rel="nofollow" target="_blank" href="http://blogs.msdn.com/jmstall"&gt;Mike Stall's .NET Debugging Blog&lt;/a&gt;, I've taken the following snippet from the &lt;a rel="nofollow" target="_blank" href="http://blogs.msdn.com/jmstall/pages/sample-pdb2xml.aspx"&gt;sample code of PDB2XML&lt;/a&gt; tool - a tool, which uses ISymbolReader to read a PDB file and writes it in an XML file.&lt;/p&gt;&lt;pre&gt;&lt;span style="color:#008000;"&gt; // We demand Unmanaged code permissions because we're reading from the file system and calling out to the Symbol Reader
&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008000;"&gt;// @TODO - make this more specific.
&lt;/span&gt;&lt;span style="color:#000000;"&gt; [System.Security.Permissions.&lt;/span&gt;&lt;span style="color:#008080;"&gt;SecurityPermission&lt;/span&gt;&lt;span style="color:#000000;"&gt;(System.Security.Permissions.&lt;/span&gt;&lt;span style="color:#008080;"&gt;SecurityAction&lt;/span&gt;&lt;span style="color:#000000;"&gt;.Demand,
 Flags = System.Security.Permissions.&lt;/span&gt;&lt;span style="color:#008080;"&gt;SecurityPermissionFlag&lt;/span&gt;&lt;span style="color:#000000;"&gt;.UnmanagedCode)]
 &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;static&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008080;"&gt;ISymbolReader&lt;/span&gt;&lt;span style="color:#000000;"&gt; GetSymbolReaderForFile(&lt;/span&gt;&lt;span style="color:#008080;"&gt;SymbolBinder&lt;/span&gt;&lt;span style="color:#000000;"&gt; binder, &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; pathModule, &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; searchPath)
 {
 &lt;/span&gt;&lt;span style="color:#008000;"&gt;// Guids for imported metadata interfaces.
&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008080;"&gt;Guid&lt;/span&gt;&lt;span style="color:#000000;"&gt; dispenserClassID = &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008080;"&gt;Guid&lt;/span&gt;&lt;span style="color:#000000;"&gt;(0xe5cb7a31, 0x7512, 0x11d2, 0x89, 0xce, 0x00, 0x80, 0xc7, 0x92, 0xe5, 0xd8); &lt;/span&gt;&lt;span style="color:#008000;"&gt;// CLSID_CorMetaDataDispenser
&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008080;"&gt;Guid&lt;/span&gt;&lt;span style="color:#000000;"&gt; dispenserIID = &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008080;"&gt;Guid&lt;/span&gt;&lt;span style="color:#000000;"&gt;(0x809c652e, 0x7396, 0x11d2, 0x97, 0x71, 0x00, 0xa0, 0xc9, 0xb4, 0xd5, 0x0c); &lt;/span&gt;&lt;span style="color:#008000;"&gt;// IID_IMetaDataDispenser
&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008080;"&gt;Guid&lt;/span&gt;&lt;span style="color:#000000;"&gt; importerIID = &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008080;"&gt;Guid&lt;/span&gt;&lt;span style="color:#000000;"&gt;(0x7dac8207, 0xd3ae, 0x4c75, 0x9b, 0x67, 0x92, 0x80, 0x1a, 0x49, 0x7d, 0x44); &lt;/span&gt;&lt;span style="color:#008000;"&gt;// IID_IMetaDataImport

&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008000;"&gt;// First create the Metadata dispenser.
&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&lt;span style="color:#000000;"&gt; objDispenser;
 &lt;/span&gt;&lt;span style="color:#008080;"&gt;NativeMethods&lt;/span&gt;&lt;span style="color:#000000;"&gt;.CoCreateInstance(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ref&lt;/span&gt;&lt;span style="color:#000000;"&gt; dispenserClassID, &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;, 1, &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ref&lt;/span&gt;&lt;span style="color:#000000;"&gt; dispenserIID, &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;out&lt;/span&gt;&lt;span style="color:#000000;"&gt; objDispenser);

 &lt;/span&gt;&lt;span style="color:#008000;"&gt;// Now open an Importer on the given filename. We'll end up passing this importer straight
&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#008000;"&gt;// through to the Binder.
&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&lt;span style="color:#000000;"&gt; objImporter;
 &lt;/span&gt;&lt;span style="color:#008080;"&gt;IMetaDataDispenser&lt;/span&gt;&lt;span style="color:#000000;"&gt; dispenser = (&lt;/span&gt;&lt;span style="color:#008080;"&gt;IMetaDataDispenser&lt;/span&gt;&lt;span style="color:#000000;"&gt;)objDispenser;
 dispenser.OpenScope(pathModule, 0, &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;ref&lt;/span&gt;&lt;span style="color:#000000;"&gt; importerIID, &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;out&lt;/span&gt;&lt;span style="color:#000000;"&gt; objImporter);

 &lt;/span&gt;&lt;span style="color:#008080;"&gt;IntPtr&lt;/span&gt;&lt;span style="color:#000000;"&gt; importerPtr = &lt;/span&gt;&lt;span style="color:#008080;"&gt;IntPtr&lt;/span&gt;&lt;span style="color:#000000;"&gt;.Zero;
 &lt;/span&gt;&lt;span style="color:#008080;"&gt;ISymbolReader&lt;/span&gt;&lt;span style="color:#000000;"&gt; reader;
 &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;try
&lt;/span&gt;&lt;span style="color:#000000;"&gt; {
 &lt;/span&gt;&lt;span style="color:#008000;"&gt;// This will manually AddRef the underlying object, so we need to be very careful to Release it.
&lt;/span&gt;&lt;span style="color:#000000;"&gt; importerPtr = &lt;/span&gt;&lt;span style="color:#008080;"&gt;Marshal&lt;/span&gt;&lt;span style="color:#000000;"&gt;.GetComInterfaceForObject(objImporter, &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#008080;"&gt;IMetadataImport&lt;/span&gt;&lt;span style="color:#000000;"&gt;));

 reader = binder.GetReader(importerPtr, pathModule, searchPath);
 }
 &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;finally
&lt;/span&gt;&lt;span style="color:#000000;"&gt; {
 &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (importerPtr != &lt;/span&gt;&lt;span style="color:#008080;"&gt;IntPtr&lt;/span&gt;&lt;span style="color:#000000;"&gt;.Zero)
 {
 &lt;/span&gt;&lt;span style="color:#008080;"&gt;Marshal&lt;/span&gt;&lt;span style="color:#000000;"&gt;.Release(importerPtr);
 }
 }
 &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; reader;
 }&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;Ouch, that was a lot of code just to get the symbol reader - but wait a minute, what are the Guids doing there and the CoCreateInstance call? This screams trouble for cross platform code... It turns out that &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.symbolstore.isymbolreader.aspx"&gt;ISymbolReader&lt;/a&gt; is not useful without an object, which implements the &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/ms230172.aspx"&gt;IMetadataImport&lt;/a&gt; interface. This is a COM interface implemented by mscoree.dll, the Microsoft .NET Runtime Execution Engine. And you can't get an ISymbolReader without a &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.symbolstore.symbinder.aspx"&gt;SymBinder&lt;/a&gt;, which is not even defined in the namespace. These GUIDs and the COM classes are defined in ISymWrapper.dll, a COM interop assembly.&lt;/p&gt;&lt;p&gt;But not enough, the &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.symbolstore.isymbolbinder1.aspx"&gt;ISymbolBinder1&lt;/a&gt; (don't ask, look up &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.symbolstore.isymbolbinder.aspx"&gt;ISymbolBinder&lt;/a&gt; and ISymbolBinder1 and figure out the reason for ISymbolBinder1) interface uses an IntPtr to access this IMetadataImport interface. Essentially you're passing a COM interface in an unmanaged pointer (or native int in CIL speak) to another unmanaged COM object.&lt;/p&gt;&lt;p&gt;Somehow this is messed up. Really messed up. It looks like symbol information was an afterthought in the development of .NET and hasn't received any priority ever since .NET 1.0 - this mess has been this way since .NET 1.0 was released. I hope that things get better with .NET 4.0, but for some reason I doubt that.&lt;/p&gt;&lt;p&gt;Now we've collected lots of unusable APIs and we still can't read those PDB files anywhere outside of Windows. However this gives us something else: All of those APIs have documented some structures to pass symbol information to the calling application. These structures are very likely to be similar to what is stored on disk - at least these APIs give us some hints that the format is more complex than one might think. And finally the .NET namespace gives us some design guidelines to realize a PDB reader/writer using plain .NET.&lt;/p&gt;&lt;p&gt;More in the next post.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='http://res1.blogblog.com/tracker/6043482-1455587601268712105?l=www.michaelruck.de'/&gt;&lt;/div&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="accentbar"&gt;&lt;span class="left"&gt;&amp;nbsp;&lt;/span&gt;MOSA Dev Blogs News Feed&lt;span class="right"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description><author>illuminus86</author><pubDate>Fri, 17 Apr 2009 17:29:07 GMT</pubDate><guid isPermaLink="false">Updated Wiki: developer blogs 20090417052907P</guid></item><item><title>Updated Wiki: Home</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Home&amp;version=15</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Managed Operating System Alliance (MOSA) Framework&lt;/h1&gt;
&lt;br /&gt;The Managed Operating System Alliance (MOSA) Framework is a set of tools, specifications and source code to foster development of managed operating systems based on the Common Intermediate Language. The Framework is divided into:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Compiler%20Framework"&gt;MOSA Compiler Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Framework"&gt;MOSA Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Tools"&gt;MOSA Tools&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
More questions are answered in our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=FAQ"&gt;FAQ&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;License&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The projects created by the Managed Operating System Alliance are open source and released under the terms of the &lt;a href="http://www.codeplex.com/mosa/license" class="externalLink"&gt;New BSD License&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. Read more about our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=License"&gt;License&lt;/a&gt; policy.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Contact &amp;amp; Community&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Our project status can be seen at &lt;a href="https://www.ohloh.net/projects/mosa-project" class="externalLink"&gt;Ohloh&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://cia.vc/stats/project/MOSA" class="externalLink"&gt;CIA&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. The MOSA project sends out newsletters every second month. You can read the &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Newsletter%201"&gt;current newsletter&lt;/a&gt; or previous newsletters in the &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Newsletter%20Archive"&gt;Newsletter Archive&lt;/a&gt;. Also, stay up to date by &lt;a href="http://feeds2.feedburner.com/MosaDevBlogs?format=xml" class="externalLink"&gt;subscribing&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; to our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=developer%20blogs"&gt;developer blogs&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;IRC&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The MOSA project also has an IRC channel &lt;a href="http://embed.mibbit.com/?server=irc.freenode.net&amp;amp;channel=%23mosa&amp;amp;forcePrompt=true" class="externalLink"&gt;#mosa&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; on Freenode’s IRC network (irc.freenode.net). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Logo contest&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We have a &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=logo%20contest"&gt;logo contest&lt;/a&gt; to create a new logo and artwork for the MOSA project.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Contributing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The MOSA project needs contributions in all areas. Contributions can be comments on various specifications we'll publish, the default implementations we provide, supporting other projects, which use MOSA components as well as help on the wikis. Please read our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Contributer%20Information"&gt;Contributer Information&lt;/a&gt; page for additional information.&lt;/div&gt;</description><author>illuminus86</author><pubDate>Fri, 17 Apr 2009 17:27:13 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090417052713P</guid></item><item><title>Updated Wiki: Home</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Home&amp;version=14</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Managed Operating System Alliance (MOSA) Framework
&lt;/h1&gt; &lt;br /&gt;The Managed Operating System Alliance (MOSA) Framework is a set of tools, specifications and source code to foster development of managed operating systems based on the Common Intermediate Language. The Framework is divided into:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Compiler%20Framework&amp;amp;referringTitle=Home"&gt;MOSA Compiler Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Framework&amp;amp;referringTitle=Home"&gt;MOSA Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Tools&amp;amp;referringTitle=Home"&gt;MOSA Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;More questions are answered in our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=FAQ&amp;amp;referringTitle=Home"&gt;FAQ&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;License&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The projects created by the Managed Operating System Alliance are open source and released under the terms of the &lt;a href="http://www.codeplex.com/mosa/license" class="externalLink"&gt;New BSD License&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. Read more about our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=License&amp;amp;referringTitle=Home"&gt;License&lt;/a&gt; policy.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Contact &amp;amp; Community&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Our project status can be seen at &lt;a href="https://www.ohloh.net/projects/mosa-project" class="externalLink"&gt;Ohloh&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://cia.vc/stats/project/MOSA" class="externalLink"&gt;CIA&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. The MOSA project sends out newsletters every second month. You can read the &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Newsletter%201&amp;amp;referringTitle=Home"&gt;current newsletter&lt;/a&gt; or previous newsletters in the &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Newsletter%20Archive&amp;amp;referringTitle=Home"&gt;Newsletter Archive&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;IRC&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The MOSA project also has an IRC channel &lt;a href="http://embed.mibbit.com/?server=irc.freenode.net&amp;amp;channel=%23mosa&amp;amp;forcePrompt=true" class="externalLink"&gt;#mosa&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; on Freenode’s IRC network (irc.freenode.net). &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Logo contest&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;We have a &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=logo%20contest&amp;amp;referringTitle=Home"&gt;logo contest&lt;/a&gt; to create a new logo and artwork for the MOSA project.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Contributing&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The MOSA project needs contributions in all areas. Contributions can be comments on various specifications we'll publish, the default implementations we provide, supporting other projects, which use MOSA components as well as help on the wikis. Please read our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Contributer%20Information&amp;amp;referringTitle=Home"&gt;Contributer Information&lt;/a&gt; page for additional information.&lt;br /&gt;
&lt;/div&gt;</description><author>tgiphil</author><pubDate>Wed, 08 Apr 2009 03:41:01 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090408034101A</guid></item><item><title>Updated Wiki: Home</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Home&amp;version=13</link><description>&lt;div class="wikidoc"&gt;
&lt;h2&gt;
Managed Operating System Alliance (MOSA) Framework
&lt;/h2&gt; &lt;br /&gt;The Managed Operating System Alliance (MOSA) Framework is a set of tools, specifications and source code to foster development of managed operating systems based on the Common Intermediate Language. The Framework is divided into:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Compiler%20Framework&amp;amp;referringTitle=Home"&gt;MOSA Compiler Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Framework&amp;amp;referringTitle=Home"&gt;MOSA Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=MOSA%20Tools&amp;amp;referringTitle=Home"&gt;MOSA Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;More questions are answered in our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=FAQ&amp;amp;referringTitle=Home"&gt;FAQ&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;License&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The projects created by the Managed Operating System Alliance are open source and released under the terms of the &lt;a href="http://www.codeplex.com/mosa/license" class="externalLink"&gt;New BSD License&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. Read more about our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=License&amp;amp;referringTitle=Home"&gt;License&lt;/a&gt; policy.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Contact &amp;amp; Community&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Our project status can be seen at &lt;a href="https://www.ohloh.net/projects/mosa-project" class="externalLink"&gt;Ohloh&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://cia.vc/stats/project/MOSA" class="externalLink"&gt;CIA&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. The MOSA project sends out newsletters every second month. You can read the &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Newsletter%201&amp;amp;referringTitle=Home"&gt;current newsletter&lt;/a&gt; or previous newsletters in the &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Newsletter%20Archive&amp;amp;referringTitle=Home"&gt;Newsletter Archive&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;IRC&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The MOSA project also has an IRC channel &lt;a href="http://embed.mibbit.com/?server=irc.freenode.net&amp;amp;channel=%23mosa&amp;amp;forcePrompt=true" class="externalLink"&gt;#mosa&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; on Freenode’s IRC network (irc.freenode.net). &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Logo contest&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;We have a &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=logo%20contest&amp;amp;referringTitle=Home"&gt;logo contest&lt;/a&gt; to create a new logo and artwork for the MOSA project.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Contributing&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The MOSA project needs contributions in all areas. Contributions can be comments on various specifications we'll publish, the default implementations we provide, supporting other projects, which use MOSA components as well as help on the wikis. Please read our &lt;a href="http://mosa.codeplex.com/Wiki/View.aspx?title=Contributer%20Information&amp;amp;referringTitle=Home"&gt;Contributer Information&lt;/a&gt; page for additional information.&lt;br /&gt;
&lt;/div&gt;</description><author>tgiphil</author><pubDate>Wed, 08 Apr 2009 03:39:32 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090408033932A</guid></item><item><title>New Comment on "Device Drivers"</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Device Drivers&amp;ANCHOR#C12429</link><description>This is not a list of buses, but of different types of device drivers. All your examples fall into one of those three device driver types; except for Printers (but we're a long away from developing Print drivers).</description><author>tgiphil</author><pubDate>Fri, 06 Mar 2009 13:03:56 GMT</pubDate><guid isPermaLink="false">New Comment on "Device Drivers" 20090306010356P</guid></item><item><title>New Comment on "Device Drivers"</title><link>http://mosa.codeplex.com/Wiki/View.aspx?title=Device Drivers&amp;ANCHOR#C12425</link><description>The use of the word "type" here seems to be synonymous with "bus". I would submit the following additions:

PCI-X
PCIe
firewire
parallel port
serial
ps/2
ethernet ( e.g. printers )

Also, what about non-x86 architectures? They may have other types of buses as well.

</description><author>Royce3</author><pubDate>Thu, 05 Mar 2009 22:30:56 GMT</pubDate><guid isPermaLink="false">New Comment on "Device Drivers" 20090305103056P</guid></item><item><title>Updated Wiki: mosarfc001</title><link>http://www.codeplex.com/mosa/Wiki/View.aspx?title=mosarfc001&amp;version=1</link><description>&lt;div class="wikidoc"&gt;
MOSA-RFC-001&lt;br /&gt;--&lt;br /&gt;MOSA RFC Definitions, Format, Ratification, and Maintenance Processes&lt;br /&gt; &lt;br /&gt;SUMMARY:&lt;br /&gt;This RFC outlines how subsequent MOSA RFCs should be written. It defines the ratification process, how changes to a ratified RFC are to be handled, and other administrative procedures for RFC proposing and management.&lt;br /&gt; &lt;br /&gt;DEFINITIONS:&lt;br /&gt;The definitions and usage of certain conformance terms shall follow the definitions set forth in the IETF's RFC-2119.&lt;br /&gt; &lt;br /&gt;FORMAT:&lt;br /&gt;Officially ratified MOSA RFCs MUST be written in XML format, in compliance with the latest published version of the MOSA RFC XSD file. While NOT NECESSARY, it is highly RECOMMENDED that proposed RFCs be written in compliance with this XSD. Alternative formats during the proposal stage MAY include HTML, RTF, PDF, and plain text.&lt;br /&gt; &lt;br /&gt;RFCs SHALL be numbered in a sequential increasing order, prepended with MOSA-RFC-.&lt;br /&gt; &lt;br /&gt;RATIFICATION:&lt;br /&gt;The call for a ratification vote MUST be initiated by a MOSA member organization, undertaken on MOSA's mailing list. Other MOSA member organizations then MAY vote for or against the proposed RFC on the mailing list. It is RECOMMENDED that organizations voting against the RFC include constructive comments over the disputed areas of the RFC. Voting SHALL continue until all member organizations have indicated their voting position, or abstention from voting. A proposed RFC MUST reach a majority acceptance vote of all member organizations to be ratified. Abstention votes SHALL be considered as being against an RFC's acceptance, for purposes of determining majority acceptance.&lt;br /&gt; &lt;br /&gt;CHANGE MANAGEMENT:&lt;br /&gt;Upon ratification, a copy of the XML definition of the ratified version of the RFC MUST be placed under a source control system. Further updates to the RFC SHALL be considered a proposal, subject to the ratification process. Upon ratification, the original RFC copy SHALL be updated with the accepted change. The RFC's change summary section SHALL be updated with the contact name of the member organization who proposed the update, along with the date of ratification.&lt;br /&gt;
&lt;/div&gt;</description><author>sbalmos</author><pubDate>Sun, 25 Jan 2009 22:03:40 GMT</pubDate><guid isPermaLink="false">Updated Wiki: mosarfc001 20090125100340P</guid></item><item><title>Updated Wiki: Home</title><link>http://www.codeplex.com/mosa/Wiki/View.aspx?title=Home&amp;version=12</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
Managed Operating System Alliance (MOSA) Framework
&lt;/h1&gt; &lt;br /&gt;The Managed Operating System Alliance (MOSA) Framework is a set of tools, specifications and source code to foster development of managed operating systems based on the Common Intermediate Language. The Framework is divided into:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/mosa/Wiki/View.aspx?title=MOSA%20Compiler%20Framework&amp;amp;referringTitle=Home"&gt;MOSA Compiler Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/mosa/Wiki/View.aspx?title=MOSA%20Framework&amp;amp;referringTitle=Home"&gt;MOSA Framework&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/mosa/Wiki/View.aspx?title=MOSA%20Tools&amp;amp;referringTitle=Home"&gt;MOSA Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;More questions are answered in our &lt;a href="http://www.codeplex.com/mosa/Wiki/View.aspx?title=FAQ&amp;amp;referringTitle=Home"&gt;FAQ&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;License&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The projects created by the Managed Operating System Alliance are open source and released under the terms of the &lt;a href="http://www.codeplex.com/mosa/license" class="externalLink"&gt;New BSD License&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. Read more about our &lt;a href="http://www.codeplex.com/mosa/Wiki/View.aspx?title=License&amp;amp;referringTitle=Home"&gt;License&lt;/a&gt; policy.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Contact &amp;amp; Community&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Our project status can be seen at &lt;a href="https://www.ohloh.net/projects/mosa-project" class="externalLink"&gt;Ohloh&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://cia.vc/stats/project/MOSA" class="externalLink"&gt;CIA&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. The MOSA project sends out newsletters every second month. You can read the &lt;a href="http://www.codeplex.com/mosa/Wiki/View.aspx?title=Newsletter%201&amp;amp;referringTitle=Home"&gt;current newsletter&lt;/a&gt; or previous newsletters in the &lt;a href="http://www.codeplex.com/mosa/Wiki/View.aspx?title=Newsletter%20Archive&amp;amp;referringTitle=Home"&gt;Newsletter Archive&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;IRC&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The MOSA project also has an IRC channel &lt;a href="http://embed.mibbit.com/?server=irc.freenode.net&amp;amp;channel=%23mosa&amp;amp;forcePrompt=true" class="externalLink"&gt;#mosa&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; on Freenode’s IRC network (irc.freenode.net). &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Logo contest&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;We have a &lt;a href="http://www.codeplex.com/mosa/Wiki/View.aspx?title=logo%20contest&amp;amp;referringTitle=Home"&gt;logo contest&lt;/a&gt; to create a new logo and artwork for the MOSA project.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Contributing&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The MOSA project needs contributions in all areas. Contributions can be comments on various specifications we'll publish, the default implementations we provide, supporting other projects, which use MOSA components as well as help on the wikis. Please read our &lt;a href="http://www.codeplex.com/mosa/Wiki/View.aspx?title=Contributer%20Information&amp;amp;referringTitle=Home"&gt;Contributer Information&lt;/a&gt; page for additional information.&lt;br /&gt;
&lt;/div&gt;</description><author>tgiphil</author><pubDate>Sat, 17 Jan 2009 03:52:11 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090117035211A</guid></item><item><title>Updated Wiki: FAQ</title><link>http://www.codeplex.com/mosa/Wiki/View.aspx?title=FAQ&amp;version=4</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
FAQ
&lt;/h1&gt; &lt;br /&gt;These are questions we're frequently answering in our IRC channel, the mailing list or which come up during conversations.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;1. What does MOSA stand for?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Managed Operation System Alliance. It is an alliance of two independent projects &lt;a href="http://www.sharpos.org" class="externalLink"&gt;SharpOS&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.ensemble-os.org" class="externalLink"&gt;Ensemble OS&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; that are working to create a .NET based operating system. As operating systems share a lot of common groundwork MOSA aims to standardize interfaces in order to foster portability and to provide both projects with basic implementations of these interfaces.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;2. Who can join?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Anyone who is interested in operating system or .NET development can join the alliance. You have to keep in mind our &lt;a href="http://www.codeplex.com/mosa/license" class="externalLink"&gt;New BSD License&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for your contributions though.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;3. What was the reason for creating MOSA?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The reason is to get the independent .NET operating system projects to work together and agree on some specifications. If any of these projects want to succeed, they'll need driver and developer support. Hardware developers will not write three drivers that basically do the same thing. So the reason for MOSA is simple: We don't want to waste time doing the same things twice or more.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;4. Do you require the use of the MOSA kernel in depending projects?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;No. We provide default implementations for kernel components, but there will not be another MOSA kernel. We want to share not embrace. Our policies clearly indicate that we develop kernel components whose primary purpose is to prove the specifications are viable and that they can be reused by projects developing along the MOSA specification.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;5. What do your specifications describe?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;There are various specifications in development. They have a textual part to them and an .NET interface that can be used by clients to communicate with various implementations of these services.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;6. Why do you require interfaces for kernel services?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Because interfaces give us a lot of advantages. You can create proxies or adapters for them and using interfaces there's no definition of the kernel structure. Using this approach and the services offered by the .NET platform our services can be reused in nano-, micro- or macrokernels.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;7. Is this based on Unix, Windows or Posix?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;None. In our opinion it doesn't make sense to develop an operating system from scratch that doesn't take advantage of the features the .NET platform provides. Our specifications do take the same role as POSIX does in the Unix world though.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;8. What advantages of .NET are you talking about?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Self-Describing: Our idea of device drivers is to make them fully self-contained and self-describing. Classical operating system need metadata in the form of external files or kernel descriptor entries. Our drivers are marked with attributes that indicate the devices they support.&lt;/li&gt;&lt;li&gt;Common Intermediate Language: The operating system, its services, the drivers and apps will all be compiled to the CIL by the source code compilers and compiled to native code by the MOSA compiler. We ensure runtime safety and security with our compiler. We do not allow execution of untrusted code or unsafe code.&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;9. What about legacy (non-.NET) apps?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;We will not support native code applications on the MOSA kernel itself. A project, which uses the MOSA components may do so. We think that virtualization is the more appropriate way to run native applications on a managed kernel. The MOSA compiler will not support P/Invoke calls natively.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;10.  What kind of .NET runtime will be available?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;We are developing an entirely new Runtime as part of the MOSA effort. This runtime is developed along the CIL specifications published by ECMA. We are building our own runtime with pluggable algorithms in order to be very flexible and usable for research.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;11. Which .NET assemblies are available?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;There are plans to reuse the assemblies provided by the &lt;a href="http://www.mono-project.com" class="externalLink"&gt;mono project&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; where appropriate. We will adapt their code and replace their system calls and native code interfaces with our specification based approach.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;12. Is this based on Microsoft Singularity?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;No. We do not share or reuse any code from Microsoft Singularity. We strongly discourage developers from even looking at their code in order to not get tainted. Our code is developed from scratch and our developers have invested a lot of time in the design.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;13. Why not reuse the Mono runtime or the SSCLI?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The mono runtime is developed in C - we do not want unsafe code or code not compiled to the CLI. The SSCLI can not be used for the same reasons and additionally again due to restrictive licensing.&lt;br /&gt;
&lt;/div&gt;</description><author>tgiphil</author><pubDate>Wed, 14 Jan 2009 15:47:03 GMT</pubDate><guid isPermaLink="false">Updated Wiki: FAQ 20090114034703P</guid></item><item><title>Updated Wiki: FAQ</title><link>http://www.codeplex.com/mosa/Wiki/View.aspx?title=FAQ&amp;version=3</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
FAQ
&lt;/h1&gt; &lt;br /&gt;These are questions we're frequently answering in our IRC channel, the mailing list or which come up during conversations.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;1. What does MOSA stand for?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Managed Operation System Alliance. It is an alliance of two independent projects &lt;a href="http://www.sharpos.org" class="externalLink"&gt;SharpOS&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.ensemble-os.org" class="externalLink"&gt;Ensemble OS&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; that are creating .NET based operating system. As operating systems share a lot of common groundwork MOSA aims to standardize interfaces in order to foster portability and to provide both projects with basic implementations of these interfaces.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;2. Who can join?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Anyone who is interested in operating system or .NET development can join the alliance. You have to keep in mind our &lt;a href="http://www.codeplex.com/mosa/license" class="externalLink"&gt;New BSD License&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; for your contributions though.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;3. What was the reason for creating MOSA?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The reason is to get the independent .NET operating system projects to work together and agree on some specifications. If any of these projects want to succeed, they'll need driver and developer support. Hardware developers will not write three drivers that basically do the same thing. So the reason for MOSA is simple: We don't want to waste time doing the same things twice or more.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;4. Do you require the use of the MOSA kernel in depending projects?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;No. We provide default implementations for kernel components, but there will not be another MOSA kernel. We want to share not embrace. Our policies clearly indicate that we develop kernel components whose primary purpose is to prove the specifications are viable and that they can be reused by projects developing along the MOSA specification.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;5. What do your specifications describe?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;There are various specifications in development. They have a textual part to them and an .NET interface that can be used by clients to communicate with various implementations of these services.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;6. Why do you require interfaces for kernel services?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Because interfaces give us a lot of advantages. You can create proxies or adapters for them and using interfaces there's no definition of the kernel structure. Using this approach and the services offered by the .NET platform our services can be reused in nano-, micro- or macrokernels.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;7. Is this based on Unix, Windows or Posix?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;None. In our opinion it doesn't make sense to develop an operating system from scratch that doesn't take advantage of the features the .NET platform provides. Our specifications do take the same role as POSIX does in the Unix world though.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;8. What advantages of .NET are you talking about?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;Self-Describing: Our idea of device drivers is to make them fully self-contained and self-describing. Classical operating system need metadata in the form of external files or kernel descriptor entries. Our drivers are marked with attributes that indicate the devices they support.&lt;/li&gt;&lt;li&gt;Common Intermediate Language: The operating system, its services, the drivers and apps will all be compiled to the CIL by the source code compilers and compiled to native code by the MOSA compiler. We ensure runtime safety and security with our compiler. We do not allow execution of untrusted code or unsafe code.&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;9. What about legacy (non-.NET) apps?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;We will not support native code applications on the MOSA kernel itself. A project, which uses the MOSA components may do so. We think that virtualization is the more appropriate way to run native applications on a managed kernel. The MOSA compiler will not support P/Invoke calls natively.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;10.  What kind of .NET runtime will be available?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;We are developing an entirely new Runtime as part of the MOSA effort. This runtime is developed along the CIL specifications published by ECMA. We are building our own runtime with pluggable algorithms in order to be very flexible and usable for research.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;11. Which .NET assemblies are available?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;There are plans to reuse the assemblies provided by the &lt;a href="http://www.mono-project.com" class="externalLink"&gt;mono project&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; where appropriate. We will adapt their code and replace their system calls and native code interfaces with our specification based approach.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;12. Is this based on Microsoft Singularity?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;No. We do not share or reuse any code from Microsoft Singularity. We strongly discourage developers from even looking at their code in order to not get tainted. Our code is developed from scratch and our developers have invested a lot of time in the design.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;13. Why not reuse the Mono runtime or the SSCLI?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The mono runtime is developed in C - we do not want unsafe code or code not compiled to the CLI. The SSCLI can not be used for the same reasons and additionally again due to restrictive licensing.&lt;br /&gt;
&lt;/div&gt;</description><author>tgiphil</author><pubDate>Wed, 14 Jan 2009 15:46:08 GMT</pubDate><guid isPermaLink="false">Updated Wiki: FAQ 20090114034608P</guid></item><item><title>Updated Wiki: MIR</title><link>http://www.codeplex.com/mosa/Wiki/View.aspx?title=MIR&amp;version=2</link><description>&lt;div class="wikidoc"&gt;
&lt;h1&gt;
MIR - Machine specific Intermediate Representation
&lt;/h1&gt; &lt;br /&gt;The machine specific intermediate representation is target platform specific. The MOSA compiler currently has subprojects for the following target architectures:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codeplex.com/mosa/Wiki/View.aspx?title=x86&amp;amp;referringTitle=MIR"&gt;x86&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Each of these target platforms has their own machine specific intermediate representation.&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Why another level after the intermediate representation?&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;Using another level makes it possible to use target architecture specific features. For example, the x86 is able to transform load-modify-store sequences into a modify-store sequences, as it allows a memory operand for most arithmetic operations. This results in smaller generated code as well as better runtime performance in some cases.&lt;br /&gt;
&lt;/div&gt;</description><author>tgiphil</author><pubDate>Wed, 14 Jan 2009 15:43:18 GMT</pubDate><guid isPermaLink="false">Updated Wiki: MIR 20090114034318P</guid></item></channel></rss>