Register
Home Projects Help

Frequently Asked Questions

If you have a question, post it here and if you have an answer to an un-answered question, feel free to post that too :)

I want to help out with the project, but I don’t know what to do.

Check out the Issues part of the website to see a list of features that need to be implemented and bugs that need to be fixed, or go to the IRC channel or post an email on the Mailing_List and ask.

What does ADC stand for?

ADC stands for Architecture-Dependent Code. More information on that can be found here ADC.

What does AOT mean?

AOT stands for Ahead-of-Time, and it refers to the IL -> native code compiler that we use to precompile our kernel DLL to run as a kernel. More information on that can be found here SharpOS.AOT.

What does the kernel build process look like?

Before we compile the kernel itself, we use a tool called KeymapCompiler to convert source keymap definitions into binary files suitable for inclusion into the kernel binary. We take the keymaps and pack them into a “keymap archive”, which is like a simple binary dictionary consisting of a set of items, each item being the name of the keymap followed by the keymap data. We then compile the kernel source code into an IL bytecode DLL, embedding the keymaps and other data as resources. The kernel is compiled as SharpOS.Kernel.dll. Then we use our AOT compiler to translate the kernel DLL into a binary file that is suitable for running as a kernel. The kernel file is SharpOS.Kernel.bin. The kernel binary contains a PE header and multiboot header, as well as a COFF table. Provided that the AOT succeeded, we then use a special tool we wrote called DiskImageUpdater to put the kernel into an EXT2 floppy disk image for testing. The code used to do this is platform-independent (IE we don’t need to use ‘mount’ on Linux or anything like that).

Can the AOT compiler compile itself?

The AOT compiler is not capable of compiling itself yet, and when it is able to you will need to specify a DLL that provides the stub implementations that the AOT needs to link against. Our AOT is not a standalone AOT in the respect that it will produce totally x86 Windows binaries from .NET ones. It will only produce kernel binaries.

I see the AOT places a PE header in the kernel. Is it possible to disable this behavior?

Yes, you must comment out the ’#define PE’ line in AOT/Core/X86/Assembly.cs. Any compilations done when the AOT is compiled this way will result in a kernel without a PE header. Be aware that debugging using GDB will not be possible.

How complete is the IL instruction coverage in the AOT?

Almost all of the base instructions are implemented, and large parts of the “object model” instructions are now also implemented. Some of the instructions are partially implemented by the kernel via methods used as callbacks by the AOT. This technique is used for object allocation, throwing exceptions, handling integer overflows, etc. (typically operations handled by the CLR).

Does SharpOS use Assembler?

No. SharpOS is programmed 100% in C#.

Export to HTML, TXT