diff --git a/Source/Docs/a-dive-into-baremetal.rst b/Source/Docs/a-dive-into-baremetal.rst index ad4f296b8b..b59cef1cfc 100644 --- a/Source/Docs/a-dive-into-baremetal.rst +++ b/Source/Docs/a-dive-into-baremetal.rst @@ -198,7 +198,7 @@ good example of this is the ``PCService``, or even the aforementioned ``DeviceSe fulfills the purpose of handling power management, like shutting down or rebooting the system. This service must be queryable at any point in time, whenever the user wishes to shut down or reboot their PC. Similarly (but more so to the end user), the ``DeviceService`` allows querying any initialized device driver in the system. This is -particularly useful if you want to, say, get all ``IGraphicsDevice``s in the system, or even get a very specific device +particularly useful if you want to, say, get all ``IGraphicsDevice`` devices in the system, or even get a very specific device like a ``StandardKeyboard``. Either way, here, we initialize a total of **5 new services**, all of which most likely need no introduction now. But, diff --git a/Source/Docs/compiler-design.rst b/Source/Docs/compiler-design.rst index 655d324295..cb6b47f96b 100644 --- a/Source/Docs/compiler-design.rst +++ b/Source/Docs/compiler-design.rst @@ -1,5 +1,5 @@ ############### -Compiler Design +Compiler design ############### The MOSA Compiler framework is designed around two pipelines, each with multiple stages, and a type system. diff --git a/Source/Docs/compiler-optimizations.rst b/Source/Docs/compiler-optimizations.rst index c3645900c0..1d4b99f213 100644 --- a/Source/Docs/compiler-optimizations.rst +++ b/Source/Docs/compiler-optimizations.rst @@ -1,5 +1,5 @@ ###################### -Compiler Optimizations +Compiler optimizations ###################### Optimizations diff --git a/Source/Docs/compiler-transformations.rst b/Source/Docs/compiler-transformations.rst index 6b9fdf4aa7..c98f2da3c0 100644 --- a/Source/Docs/compiler-transformations.rst +++ b/Source/Docs/compiler-transformations.rst @@ -1,5 +1,5 @@ ######################## -Compiler Transformations +Compiler transformations ######################## The MOSA compiler uses a database of transformations to represent specific types of optimizations. These transformation diff --git a/Source/Docs/contents.txt b/Source/Docs/contents.txt index ee87d37ce1..6a0020c612 100644 --- a/Source/Docs/contents.txt +++ b/Source/Docs/contents.txt @@ -13,6 +13,7 @@ :maxdepth: 1 getting-started + usb-flash-drive-installation demos .. toctree:: @@ -26,6 +27,15 @@ tool-explorer tool-debugger +.. toctree:: + :caption: Utilities + :hidden: + :maxdepth: 1 + + unit-tests + create-core-library + source-code-generator + .. toctree:: :caption: Settings :hidden: @@ -59,14 +69,6 @@ runtime-tables -.. toctree:: - :caption: Advanced - :hidden: - :maxdepth: 1 - - unit-tests - usb-flash-drive-installation - .. toctree:: :caption: Contribute :hidden: diff --git a/Source/Docs/create-core-library.rst b/Source/Docs/create-core-library.rst new file mode 100644 index 0000000000..b1348fa114 --- /dev/null +++ b/Source/Docs/create-core-library.rst @@ -0,0 +1,56 @@ +################### +Create core library +################### + +To implement its own core library, MOSA generates a "dummy" one that includes all the public APIs but without the actual implementation code. The **Create core library** utility takes care of doing that work. To clone the official .NET core library repository, it requires ``git``. Here are the available command line arguments for the utility: + +.. csv-table:: + :header: "Short name","Long name","Description" + :widths: 100, 100, 50 + + -o,\-\-output,Sets the output directory. + -c,\-\-copy-files,"If enabled, only copies and patches the source files and stops." + +To run the utility, simply execute the following command on any platform: + +.. code-block:: bash + + dotnet bin/Mosa.Utility.CreateCoreLib.dll -o Output + +The process can take between a few seconds to a few minutes depending on the speed of your internet connection and PC. At the end, you should get a ``System.Runtime.dll`` file at the directory where you executed the utility. At the end, you should get a console output that looks like this: + +.. code-block:: text + + Cloning .NET runtime GitHub repository... + Cloning into 'runtime'... + remote: Enumerating objects: 65953, done. + remote: Counting objects: 100% (65953/65953), done. + remote: Compressing objects: 100% (42248/42248), done. + Receiving objects: 100% (65953/65953), 88.04 MiB | 9.16 MiB/s, done. + remote: Total 65953 (delta 25898), reused 34761 (delta 20956), pack-reused 0 (from 0) + Resolving deltas: 100% (25898/25898), done. + Updating files: 100% (58901/58901), done. + Parsing input files... + Patching System.DirectoryServices.manual.cs... + Patching System.Net.Http.Json.cs... + Patching System.Net.Http.WinHttpHandler.cs... + Patching System.Configuration.ConfigurationManager.cs... + Patching System.Data.Common.cs... + Compiling source files... + Decompiling assembly... + Removing project file... + Removing Properties folder... + Patching System.Collections.Generic/PriorityQueue.cs... + Patching System.Collections.Generic/PriorityQueue.cs... + Patching System/Nullable.cs... + Patching System/ReadOnlySpan.cs... + Patching System.Runtime.InteropServices/Marshal.cs... + Patching System.Runtime.InteropServices/MemoryMarshal.cs... + Patching System.Runtime.CompilerServices/Unsafe.cs... + Patching System.Numerics/Vector.cs... + Patching System.Runtime.Intrinsics/Vector64.cs... + Patching System.Runtime.Intrinsics/Vector128.cs... + Patching System.Runtime.Intrinsics/Vector256.cs... + Patching System.Runtime.Intrinsics/Vector512.cs... + Patching System.Threading/Volatile.cs... + Patching System.Threading/Interlocked.cs... diff --git a/Source/Docs/demos.rst b/Source/Docs/demos.rst index 53d7dd44e0..b0981bb78a 100644 --- a/Source/Docs/demos.rst +++ b/Source/Docs/demos.rst @@ -12,7 +12,7 @@ CoolWorld It's MOSA's flagship demo. It can boot into either console mode (containing a shell with a few basic commands) or graphical mode (which makes use of the GPU and some other features offered by MOSA). You can boot into console mode by -inserting the `-bootoptions coolworldui=consolemode` command line option when starting the MOSA launcher. +inserting the ``-bootoptions coolworldui=consolemode`` command line option when starting the MOSA launcher. Console mode: diff --git a/Source/Docs/faq.rst b/Source/Docs/faq.rst index 287d5fb374..4ccea1a967 100644 --- a/Source/Docs/faq.rst +++ b/Source/Docs/faq.rst @@ -45,4 +45,4 @@ Are Cosmos and MOSA working together? Recently, there have been talks to integrate the MOSA compiler into Cosmos, thus potentially being able to implement more features in the MOSA compiler while also providing more stability and performance for Cosmos. While nothing has come out of this yet, you can express your opinion on this in our Discord in #cosmos-integration and in the Cosmos -Discord in #mosa-cosmos-crossdev. +Discord in #dev-mosa-cosmos. diff --git a/Source/Docs/get-involved.rst b/Source/Docs/get-involved.rst index 8ddcdbab18..3001b7515e 100644 --- a/Source/Docs/get-involved.rst +++ b/Source/Docs/get-involved.rst @@ -1,5 +1,5 @@ ############ -Get Involved +Get involved ############ We need your help! @@ -35,5 +35,5 @@ contributions if you: Please be careful with any contribution you make regarding to patents, other open source licenses and any potential restrictions. We can only accept contributions compatible with the `New BSD License `__. MIT license is a compatible license, while GNU licenses -are incomparable. Read more about our :doc:`license` policy. +are incomparable. Read more about our :doc:`license` policy. diff --git a/Source/Docs/getting-started.rst b/Source/Docs/getting-started.rst index ee72d1d763..a50bc25b4a 100644 --- a/Source/Docs/getting-started.rst +++ b/Source/Docs/getting-started.rst @@ -1,5 +1,5 @@ *************** -Getting Started +Getting started *************** Prerequisites @@ -20,12 +20,12 @@ On Linux, the following prerequisites are necessary: * `Git `__ (only if you want to clone and build manually) * `QEMU `__ -If you're using Ubuntu 22.04, you can use the following commands to quickly set everything up: +If you're using Ubuntu 24.04, you can use the following commands to quickly set everything up: .. code-block:: bash # Register Microsoft package repository - wget -q https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb + wget -q https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb # Install the .NET Core SDK diff --git a/Source/Docs/images/ventoy2disk-gui.png b/Source/Docs/images/ventoy2disk-gui.png new file mode 100644 index 0000000000..95fdd8d0fa Binary files /dev/null and b/Source/Docs/images/ventoy2disk-gui.png differ diff --git a/Source/Docs/introduction.rst b/Source/Docs/introduction.rst index 4a993e04cf..1ba1860193 100644 --- a/Source/Docs/introduction.rst +++ b/Source/Docs/introduction.rst @@ -46,4 +46,4 @@ The MOSA compiler seeks to provide high quality code generation using the follow - Block Reordering - Greedy Register Allocation -For an exhaustive list, see :doc:`Compiler Optimizations` which also gives a description of each of these optimizations. +For an exhaustive list, see :doc:`compiler-optimizations` which also gives a description of each of these optimizations. diff --git a/Source/Docs/optimization-options.rst b/Source/Docs/optimization-options.rst index cbf4d76a93..174af5ce7f 100644 --- a/Source/Docs/optimization-options.rst +++ b/Source/Docs/optimization-options.rst @@ -1,7 +1,7 @@ #################### -Optimization Options +Optimization options #################### Here are the available optimization options for the MOSA compiler: -.. image:: images/mosa-optimization-options.png \ No newline at end of file +.. image:: images/mosa-optimization-options.png diff --git a/Source/Docs/project-structure.rst b/Source/Docs/project-structure.rst index a1c4e49afc..fc3abebc41 100644 --- a/Source/Docs/project-structure.rst +++ b/Source/Docs/project-structure.rst @@ -1,5 +1,5 @@ ################# -Project Structure +Project structure ################# MOSA has a lot of projects, which can seem daunting at first. This page will exclusively cover all the types of projects diff --git a/Source/Docs/runtime-tables.rst b/Source/Docs/runtime-tables.rst index f67e92a700..2e0d1d5bcb 100644 --- a/Source/Docs/runtime-tables.rst +++ b/Source/Docs/runtime-tables.rst @@ -1,5 +1,5 @@ ################### -MOSA Runtime Tables +MOSA runtime tables ################### This diagram represents the internal runtime tables within the MOSA virtual machine: @@ -12,7 +12,7 @@ Table Definitions .. csv-table:: :header: "Internal String Object" :widths: 200 - + Pointer to Method Table String Length Unicode String @@ -20,7 +20,7 @@ Table Definitions .. csv-table:: :header: "Assembly Table" :widths: 200 - + Number of Assemblies Pointer to Assembly 1..N @@ -61,7 +61,7 @@ Table Definitions Number of Fields Pointer to Field Definition 1..N - + .. csv-table:: :header: "Field Definition" :widths: 200 @@ -72,14 +72,14 @@ Table Definitions Pointer to Field Type Address Offset / Size - + .. csv-table:: :header: "Properties Table" :widths: 200 Number of Properties Pointer to Property Definition 1..N - + .. csv-table:: :header: "Property Definition" :widths: 200 @@ -90,7 +90,7 @@ Table Definitions Pointer to Property Type Pointer to Getter Method Definition Pointer to Setter Method Defiinition - + .. csv-table:: :header: "Method Lookup Table" :widths: 200 @@ -99,14 +99,14 @@ Table Definitions Pointer to Method (Starting Address) Method Size Pointer to Method Definition - + .. csv-table:: :header: "Protected Region Table" :widths: 200 Number of Regions Pointer to Protected Region Definition 1..N - + .. csv-table:: :header: "Protected Region Definition" :widths: 200 @@ -116,22 +116,22 @@ Table Definitions Region Handler Exception Handler Type Pointer to Exception Type - + .. csv-table:: :header: "Interface Slot Table" :widths: 200 - + Number of Interface Method Tables Pointer to Interface Method Table 1..N - + .. csv-table:: :header: "Interface Method Table" :widths: 200 - + Pointer to Interface Type Number of Methods Pointer to Method Definition 1..N - + .. csv-table:: :header: "Method Definition" :widths: 200 @@ -146,7 +146,7 @@ Table Definitions Pointer to Method GC Data Number of Parameters Pointer to Parameter Definition 1..N - + .. csv-table:: :header: "Property Definition" :widths: 200 @@ -155,14 +155,14 @@ Table Definitions Pointer to Custom Attributes Parameter Attributes Pointer to Parameter Type - + .. csv-table:: :header: "Custom Attributes Table" :widths: 200 Number of Attributes Pointer to Custom Attribute 1..N - + .. csv-table:: :header: "Custom Attribute" :widths: 200 @@ -171,31 +171,31 @@ Table Definitions Pointer to Constructor Method Number of Arguments Pointer to Argument 1..N - + .. csv-table:: :header: "Custom Attribute Argument" :widths: 200 - + Pointer to Argumentame Is Argument a Field Pointer to Argument Type Argument Size Argument - + .. csv-table:: :header: "Method GC Data" :widths: 200 Pointer to SafePoint Table Pointer to Method GC Stack Data - + .. csv-table:: :header: "Method GC Stack Data" :widths: 200 - + Number of Method GC Stack Entries Pointer to Method GC Stack Entry 1..N - + .. csv-table:: :header: "Method GC Stack Entry" :widths: 200 @@ -205,11 +205,11 @@ Table Definitions Live Ranges 1..N . Address Offset . Address Range - + .. csv-table:: :header: "Method SafePoint Table" :widths: 200 - + Number of SafePoints SafePoint 1..N . Address Offset diff --git a/Source/Docs/settings-options.rst b/Source/Docs/settings-options.rst index 1cb1579bb4..3e9b028577 100644 --- a/Source/Docs/settings-options.rst +++ b/Source/Docs/settings-options.rst @@ -1,8 +1,36 @@ ################ -Settings Options +Settings options ################ -Here are the setting options for the compiler tools: +Here are all the settings options available: + +Application Location Settings +----------------------------- + +.. csv-table:: + :header: "Settings", "Description" + :widths: 50, 200 + + AppLocation.Bochs,Location of the Bochs application + AppLocation.Bochs.BIOS,Location of the Bochs BIOS + AppLocation.Bochs.VGABIOS,Location of the Bochs VGA BIOS + AppLocation.GDB,Location of the GDB application + AppLocation.Mkisofs,Location of the mkisofs application + AppLocation.Ndisasm,Location of the ndisasm application + AppLocation.QemuX86,Location of the QEMU application for 32-bit x86 (qemu-system-i386) + AppLocation.QemuX64,Location of the QEMU application for 64-bit x86 (qemu-system-x86\_64) + AppLocation.QemuARM32,Location of the QEMU application for ARM32 + AppLocation.QemuARM64,Location of the QEMU application for ARM64 + AppLocation.QemuBIOS,Location of the QEMU BIOS + AppLocation.QemuImg,Location of the QEMU image application (qemu-img) + AppLocation.VmwarePlayer,Location of the VMware Workstation Player application + AppLocation.VmwareWorkstation, Location of the VMware Workstation Pro application + AppLocation.Graphviz, Location of the graphviz application + AppLocation.QemuEDK2X86, Location of the QEMU 32-bit x86 UEFI firmware + AppLocation.QemuEDK2X64, Location of the QEMU 64-bit x86 UEFI firmware + AppLocation.QemuEDK2ARM32, Location of the QEMU ARM32 UEFI firmware + AppLocation.QemuEDK2ARM64, Location of the QEMU ARM64 UEFI firmware + AppLocation.VirtualBox, Location of the VirtualBox application Compiler Settings ----------------- @@ -11,169 +39,145 @@ Compiler Settings :header: "Settings", "Description" :widths: 50, 200 - Compiler.Platform,"Platform x86, x64, ARM32, ARM64" Compiler.BaseAddress,Base address of the compiled application - Compiler.InitialStackAddress,Intial stack's starting address (note the stack grows in the downward direction). - Compiler.TraceLevel,Trace level for debugging + Compiler.InitialStackAddress,Initial stack's starting address (note: the stack grows downwards) + Compiler.Binary,"If true, emits object file, otherwise no object file is created" Compiler.MethodScanner,"If true, enable the experimental method scanner" Compiler.Multithreading,"If true, enables multithreading during compiling process" Compiler.Multithreading.MaxThreads,Maximum number of threads used by the compiler - Compiler.Binary,"If true, emits object file, otherwise no object file is created" Compiler.OutputFile,Filename of the object file - Compiler.SourceFiles,Filename(s) of the source files - -Compiler Optimizations Settings -------------------------------- - -.. csv-table:: - :header: "Settings", "Description" - :widths: 50, 200 - - Optimizations.Basic,"If true, enables prebuilt transformation optimizations, like constant folding and strength reduction" - Optimizations.SSA,"If true, transforms instructions to Single Static Assignment (SSA) form" - Optimizations.SCCP,"If true, enables Sparse Conditional Constant Propagation (SCCP) optimizations" - Optimizations.ValueNumbering,"If true, enables the Value Numbering (VN) optimizations" - Optimizations.LongExpansion,"If true, transforms some 64-bit instructions into 32-bit instructions prior to platform transformations" - Optimizations.BitTracker,"If true, enables the bit tracker optimizations" - Optimizations.LoopInvariantCodeMotion,"If true, enables the loop invariant code motion optimizations" - Optimizations.Devirtualization,"If true, transforms virtual methods calls into static method calls" - Optimizations.Platform,"If true, enable platform specific optimizations" - Optimizations.Inline,"If true, small methods can be inlined" - Optimizations.Inline.Maximum,Maximun number of instructions that can be inlined within a method - Optimizations.ScanWindow,Maximun instruction window for the optimizer to scan - Optimizations.Inline.AggressiveMaximum,Maximun number of instructions that can be inlined when a method is explicited marked to be inlined - Optimizations.Inline.Explicit,"If true, explicitly marked methods are inlined" - Optimizations.TwoPass,"If true, some optimization stages are executed twice" - Optimizations.Inline.Aggressive,Methods to be aggressively inline - Optimizations.Inline.Exclude,Methods that may not be inlined - Optimizations.ReduceCodeSize,"If true, the compiler will favor smaller code size" + Compiler.Platform,"Target platform: x86, x64, ARM32, ARM64" + Compiler.SourceFiles,File name(s) of the source file(s) + Compiler.TraceLevel,Trace level for debugging -Linker Settings ---------------- +Compiler Debug Settings +----------------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - Linker.Format,Type of ELF object file elf32 or elf64 - Linker.Symbols,"If true, emits the symbols into the object file" - Linker.StaticRelocations,"If true, emits static relocation information into the object file" - Linker.Dwarf,"If true, emits DWARF debug information into the object file" - Linker.ShortSymbolNames,"If true, emits short symbol names into the object file" - Linker.CustomSections.{Name}.SectionName,Emits a custom linker section with this section name - Linker.CustomSections.{Name}.SourceFile,Emits a custom linker section using the specific file - Linker.CustomSections.{Name}.Address,Emits a custom linker section with this address + CompilerDebug.AsmFile,File name to emit ASM disassembly + CompilerDebug.CompileTimeFile,File name to emit compile times for each method + CompilerDebug.DebugFile,File name to emit MOSA-specific debug information + CompilerDebug.FullCheckMode,"If true, causes the compiler to run internal validate checks (used to test the compiler)" + CompilerDebug.InlinedFile,File name to emit a list of all inlined methods + CompilerDebug.MapFile,File name to emit a map of all symbols + CompilerDebug.CounterFile,File name to emit the global counters + CompilerDebug.NasmFile,File name to emit disassembly using the NASM tool + CompilerDebug.PostLinkHashFile,File name to emit a list of all methods with their hash value after linking + CompilerDebug.PreLinkHashFile,File name to emit a list of all methods with their hash value prior to linking + CompilerDebug.Statistics,"If true, enables statistics gathering" + CompilerDebug.CounterFilter,Filters the global counters within the global counters file -Common Settings ---------------- +Debugger Settings +----------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - SearchPaths,Folder to search for files - DefaultFolder,Default folder for output files - TemporaryFolder,Specifies a temporary folder + Debugger.BreakpointFile,File name of the breakpoint file (not implemented) + Debugger.WatchFile,File name of the watch file (not implemented) -Compiler Debug Settings ------------------------ +Emulator Settings +----------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - CompilerDebug.Statistics,"If true, enables statistics gathering" - CompilerDebug.DebugFile,Filename to emit a MOSA specific debug information - CompilerDebug.MapFile,Filename to emit a map of all symbols - CompilerDebug.CompileTimeFile,Filename to emit compile times for each method - CompilerDebug.AsmFile,Filename to emit ASM disassembly - CompilerDebug.CountersFile,Filename to emit the global counters - CompilerDebug.CountersFilter,Filters the global counters within the global counters file - CompilerDebug.NasmFile,Filename to emit disassembly using the NASM tool - CompilerDebug.InlinedFile,Filename to emit a list of all methods that were inlined - CompilerDebug.PreLinkHashFile,Filename to emit a list of all methods with their hash value prior to linking - CompilerDebug.PostLinkHashFile,Filename to emit a list of all methods with their hash value after linking - CompilerDebug.FullCheckMode,"If true, causes the compiler to run internal validate checks (used to test the compiler)" + Emulator,"Type of emulator: qemu, vmware, bochs" + Emulator.Cores,Amount of cores to allocate for the virtual machine + Emulator.Display,"If true, shows the video display" + Emulator.GDB,"If true, enables GDB integration within the emulator" + Emulator.MaxRuntime,Maximum run time of the virtual machine in seconds + Emulator.Memory,Amount of memory to allocate for the virtual machine in MB + Emulator.Serial,"Serial emulation type: none, pipe, tcpserver, tcpclient" + Emulator.Serial.Host,Serial host name or IP address + Emulator.Serial.Port,Serial port + Emulator.Serial.Pipe,Serial pipe name + Emulator.Graphics,"Graphics device: std, cirrus, vbe, virtio, vmware" + Emulator.Acceleration,"Enables CPU hardware acceleration on the emulator, if available" -Compiler X86 Settings ---------------------- +Explorer Settings +----------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - X86.InterruptMethodName,Name of the method that handles interrupts + Explorer.DebugDiagnostic,"If true, debug diagnostics are captured" + Explorer.Filter,Specifies the default method filter name when Explorer is launched + Explorer.Start,"If true, immediately compiles all methods upon launch" -Explorer Settings ------------------ +GDB Settings +------------ .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - Explorer.Filter,Specifies the default method filter name when Explorer is launched - Explorer.Start,"If true, immediately compile all methods upon launch" - Explorer.DebugDiagnostic,"If true, debug diagnostics is captured" + GDB.Host,Host IP or name + GDB.Port,Port number -Launcher Settings ------------------ +Image Settings +-------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - Launcher.Start,"If true, immediately start the compiler upon launch" - Launcher.Launch,"If true, launch a virtual machine after compiling the application and generating the virtual machine image" - Launcher.Exit,"If true, exit immediately after launch" - Launcher.PlugKorlib,"If true, automatically include the plugs for CoreLib" - Launcher.GDB,"If true, launch the GNU GDB application after VM launch" - Launcher.Serial,"If true, outputs the serial data" - Launcher.Debugger,"If true, launch the MOSA debugger application after VM launch" - Launcher.Test,"If true, monitors VM serial for success or failure messages" + Image.FileSystem,"File system of the primary partition in the image file: fat12, fat16, fat32" + Image.FileSystem.RootInclude,Include files from the specified directory into the final image + Image.Folder,Destination directory of the image file + Image.Format,"Format of the virtual image file: bin, img, vhd, vdi, vmdk" + Image.ImageFile,File name of the image file + Image.Firmware,"Firmware to build the target image for: bios, uefi" + Image.DiskBlocks,Number of blocks in the image, or 0 for automatically determining it (not implemented) + Image.VolumeLabel,Volume label of the whole image (not implemented) -Image Settings --------------- +Import Settings +--------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - Image.Format,"Format of the vritual image file BIN, IMG, VHD, VDI, VMDK" - Image.FileSystem,"File system of the primary partition in the image file FAT12, FAT16, FAT32" - Image.Destination,Destination directory of the image file - Image.ImageFile,Filename of the image file - Image.FileSystem.RootInclude,Include files in specified directory - Image.DiskBlocks,Number of blocks in image (0=automatic) - Image.VolumeLabel,Volume Label + Import,File name of a settings file to import (not implemented) -Emulator Settings +Launcher Settings ----------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - Emulator,"Type of Emulator QEMU, VMware, Bochs" - Emulator.Memory,Amount of memory for the virtual machine in MB - Emulator.Display,"If true, show the video display" - Emulator.Graphics,"Graphics device: std, cirrus, vbe, virtio or vmware" - Emulator.MaxRuntime,Maximum runtime of the virtual machine in seconds (future) - Emulator.GDB,"If true, enables GDB within emulator" - Emulator.Serial,"Serial Emulation type None, Pipe, TCPServer, TCPClient" - Emulator.Serial.Host,Serial Host Name or IP address - Emulator.Serial.Port,Serial Port - Emulator.Serial.Pipe,Serial Pipename - Emulator.Acceleration,"Enables CPU hardware acceleration on the emulator, if available" + Launcher.Debugger,"If true, launches the MOSA debugger application after VM launch" + Launcher.Exit,"If true, immediately exits after launch" + Launcher.GDB,"If true, launches the GDB application after VM launch" + Launcher.Launch,"If true, launches a virtual machine after compiling the application and generating the virtual machine image" + Launcher.PlugKernel,"If true, automatically includes the plugs for the BareMetal kernel" + Launcher.PlugKorlib,"If true, automatically includes the plugs for the core library" + Launcher.Serial,"If true, outputs the serial data" + Launcher.Start,"If true, immediately starts the compiler upon launch" + Launcher.Test,"If true, monitors VM serial for success or failure messages" -GDB Settings ------------- +Linker Settings +--------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - GDB.Host,Host IP or Name for GDB - GDB.Port,Port Number for GDB + Linker.Dwarf,"If true, emits DWARF debug information into the object file" + Linker.Format,"Type of ELF object file: elf32, elf64" + Linker.ShortSymbolNames,"If true, emits short symbol names into the object file" + Linker.StaticRelocations,"If true, emits static relocation information into the object file" + Linker.Symbols,"If true, emits the symbols into the object file" + Linker.CustomSections.{Name}.SectionName,Emits a custom linker section with this section name + Linker.CustomSections.{Name}.SourceFile,Emits a custom linker section using the specific file + Linker.CustomSections.{Name}.Address,Emits a custom linker section with this address Multiboot Settings ------------------ @@ -182,62 +186,67 @@ Multiboot Settings :header: "Settings", "Description" :widths: 50, 200 - Multiboot.Version,"Multiboot version none, v2" - Multiboot.Video,"If true, enable the framebuffer provided by Multiboot" - Multiboot.Video.Width,Video Width - Multiboot.Video.Height,Video Height + Multiboot.Version,"Multiboot version: none, v2" + Multiboot.Video,"If true, enables the framebuffer provided by Multiboot" + Multiboot.Video.Width,Framebuffer width + Multiboot.Video.Height,Framebuffer height -Debugger Settings ------------------ +Compiler Optimizations Settings +------------------------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - Debugger.WatchFile,Filename of the watch file - Debugger.BreakpointFile,Filename of the breakpoint file + Optimizations.Basic,"If true, enables prebuilt transformation optimizations, like constant folding and strength reduction" + Optimizations.ScanWindow,Maximum instruction window for the optimizer to scan + Optimizations.BitTracker,"If true, enables the bit tracker optimizations" + Optimizations.LoopRangeTracker,"If true, sets a minimum and maximum value for a loop's counter according to its range" + Optimizations.Devirtualization,"If true, transforms virtual methods calls into static method calls" + Optimizations.Inline,"If true, small methods can be inlined" + Optimizations.Inline.Aggressive,Methods to be aggressively inlined + Optimizations.Inline.AggressiveMaximum,Maximum number of instructions that can be inlined when a method is explicitly marked to be inlined + Optimizations.Inline.Exclude,Methods that may not be inlined + Optimizations.Inline.Explicit,"If true, explicitly marked methods are inlined" + Optimizations.Inline.Maximum,Maximum number of instructions that can be inlined within a method + Optimizations.LongExpansion,"If true, transforms some 64-bit instructions into 32-bit instructions prior to platform transformations" + Optimizations.ReduceCodeSize,"If true, the compiler will favor smaller code size" + Optimizations.LoopInvariantCodeMotion,"If true, enables the loop invariant code motion optimizations" + Optimizations.Platform,"If true, enable platform specific optimizations" + Optimizations.SCCP,"If true, enables Sparse Conditional Constant Propagation (SCCP) optimizations" + Optimizations.SSA,"If true, transforms instructions to Single Static Assignment (SSA) form" + Optimizations.TwoPass,"If true, some optimization stages are executed twice" + Optimizations.ValueNumbering,"If true, enables the Value Numbering (VN) optimizations" -Application Location Settings +OS Settings ----------------------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - AppLocation.Bochs,Location of the BOCHS application - AppLocation.Bochs.BIOS,Location of the BOCHS BIOS - AppLocation.Bochs.VGABIOS,Location of the BOCHS VGA BIOS - AppLocation.QemuX86,Location of the QEMU application for x86 (i386) - AppLocation.QemuX64,Location of the QEMU application for x64 - AppLocation.QemuARM32,Location of the QEMU application for ARM32 - AppLocation.QemuARM64,Location of the QEMU application for ARM64 - AppLocation.QemuBIOS,Location of the QEMU BIOS - AppLocation.QemuImg,Location of the QEMUImg application - AppLocation.VmwareWorkstation, Location of the VMWorkstation application - AppLocation.VmwarePlayer,Location of the VMPlayer application - AppLocation.Ndisasm,Location of the Ndisasm application - AppLocation.Mkisofs,Location of the Mkisofs application - AppLocation.GDB,Location of the GDB application + OS.Name,Name of the operating system + OS.BootOptions,Specifies a boot string to pass to the operating system -OS Settings +Bootloader Settings ----------------------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - OS.Name, Name of operating system - OS.BootOptions, Specifies a boot string to pass to the operating system + BootLoader.Timeout,Specifies the bootloader timeout (in seconds) before the OS starts -Import Settings +Common Settings --------------- .. csv-table:: :header: "Settings", "Description" :widths: 50, 200 - Import,Filename of another settings file to import - + DefaultFolder,Default folder for output files + SearchPaths,Folder to search for files + TemporaryFolder,Specifies a temporary folder Unit Test Settings ------------------ @@ -246,7 +255,16 @@ Unit Test Settings :header: "Settings", "Description" :widths: 50, 200 - UnitTest.MaxErrors,Maximum number of errors before aborting the unit testing + UnitTest.Connection.MaxAttempts,Maximum number of restart attempts before aborting the unit tests UnitTest.Connection.TimeOut,Maximum connection timeout in milliseconds before retrying - UnitTest.Connection.MaxAttempts,Maximun number of restart attempts before aborting the unit tests - UnitTest.Filter,Specifies the default method filter name when Explorer is launched + UnitTest.Filter,Specifies the default unit test filter name when the unit tests are launched + UnitTest.MaxErrors,Maximum number of errors before aborting the unit testing + +Compiler X86 Settings +--------------------- + +.. csv-table:: + :header: "Settings", "Description" + :widths: 50, 200 + + X86.InterruptMethodName,Name of the method that handles interrupts diff --git a/Source/Docs/source-code-generator.rst b/Source/Docs/source-code-generator.rst new file mode 100644 index 0000000000..174333f9b8 --- /dev/null +++ b/Source/Docs/source-code-generator.rst @@ -0,0 +1,14 @@ +##################### +Source code generator +##################### + +Some areas of the compiler are automatically generated from JSON files, such as :doc:`transformations` for example. The **Source code generator** utility exists to assist with this task. It takes those JSON files (found in the ``Source/Docs`` folder) and generates C# code, which is then written to specific files in certain projects, like ``Mosa.Compiler.Framework``. + +This utility doesn't take any command line arguments. It requires you to be in the ``bin`` directory to be able to correctly find the ``Source`` directory. To run the utility, simply execute the following commands on any platform: + +.. code-block:: bash + + cd bin + dotnet Mosa.Utility.SourceCodeGenerator.dll + +The process won't take very long. The utility doesn't generate any console output, as it writes the contents directly to output files and moves to the next input files. The source code of this utility is very simple, so don't hesitate to check it if you want to learn more about it. diff --git a/Source/Docs/tool-compiler.rst b/Source/Docs/tool-compiler.rst index aced369e56..ce0f9b03e9 100644 --- a/Source/Docs/tool-compiler.rst +++ b/Source/Docs/tool-compiler.rst @@ -1,6 +1,6 @@ -############# -MOSA Compiler -############# +######## +Compiler +######## The **MOSA Compiler** is a console application used to compile a .NET application to a binary object file. diff --git a/Source/Docs/tool-debugger.rst b/Source/Docs/tool-debugger.rst index 653387fed9..4994a69e06 100644 --- a/Source/Docs/tool-debugger.rst +++ b/Source/Docs/tool-debugger.rst @@ -1,8 +1,8 @@ -############# -MOSA Debugger -############# +######## +Debugger +######## -The **MOSA Debugger** is GUI application used to debug a MOSA compiled application using `QEMU Virtual Machine Emulator `__. +The **MOSA Debugger** is GUI application used to debug a MOSA compiled application using `QEMU `__. .. image:: images/mosa-debugger.png diff --git a/Source/Docs/tool-explorer.rst b/Source/Docs/tool-explorer.rst index 7b1e3d76e3..e0942f145b 100644 --- a/Source/Docs/tool-explorer.rst +++ b/Source/Docs/tool-explorer.rst @@ -1,8 +1,8 @@ -############# -MOSA Explorer -############# +######## +Explorer +######## -The **MOSA Explorer** is GUI application used to visualize the compiler transformation of a method from the highest respresentation to the lowest, lowest level. The instruction stream at each stage can be viewed. In addition, specific stage logs is also available. In some cases, these logs describe why certain transforms were made. +The **MOSA Explorer** is GUI application used to visualize the compiler transformation of a method from the highest representation to the lowest, lowest level. The instruction stream at each stage can be viewed. In addition, specific stage logs is also available. In some cases, these logs describe why certain transforms were made. .. image:: images/mosa-explorer.png @@ -21,8 +21,3 @@ Command Line Options -------------------- See the :doc:`command line arguments` for a list of available options. - -Here are the most common options available: - -``-filter`` - Specifies the default method filter name when Explorer is launched diff --git a/Source/Docs/tool-launcher-console.rst b/Source/Docs/tool-launcher-console.rst index b36d62c30f..40aa9869bc 100644 --- a/Source/Docs/tool-launcher-console.rst +++ b/Source/Docs/tool-launcher-console.rst @@ -1,15 +1,15 @@ -##################### -MOSA Launcher Console -##################### +################ +Console launcher +################ -The **MOSA Launcher Console** is a console application that automates the entire build process including launching of a virtual machine. +The **MOSA Console Launcher** is a console application that automates the entire build process including launching of a virtual machine. -.. tip:: Check out the :doc:`MOSA Launcher ` for a graphic user interface version of this console application. +.. tip:: Check out the :doc:`launcher ` for a GUI version of this tool. Usage ----- -A quick example that compiles `Mosa.BareMetal.HelloWorld.x86.dll` demo with `-oMax` (all optimization enabled) and launches it using `QEMU`: +Here's a quick example that compiles ``Mosa.BareMetal.HelloWorld.x86.dll`` demo with ``-oMax`` (all optimizations enabled) and launches it using ``QEMU``: .. code-block:: text @@ -32,8 +32,3 @@ Command Line Options -------------------- See the :doc:`command line arguments` for a list of available options. - -Here are the most common options available: - -`-autostart-off` - Does not immediate start the compiler diff --git a/Source/Docs/tool-launcher.rst b/Source/Docs/tool-launcher.rst index af244fd37d..fadb5c2034 100644 --- a/Source/Docs/tool-launcher.rst +++ b/Source/Docs/tool-launcher.rst @@ -1,12 +1,12 @@ -############# -MOSA Launcher -############# +######## +Launcher +######## -The **MOSA Launcher** is GUI application used to select various compiler and build options. Once options are select, the tool automates the entire build process including launching of a virtual machine. +The **MOSA Launcher** is GUI application used to select various compiler and build options. Once options are selected, the tool automates the entire build process including launching a virtual machine. .. image:: images/mosa-launcher.png -.. tip:: Check out the :doc:`MOSA Launcher Console ` for a console version of this application. +.. tip:: Check out the :doc:`console launcher ` for a console version of this tool. Usage ----- @@ -24,8 +24,3 @@ Command Line Options -------------------- See the :doc:`command line arguments` for a list of available options. - -Here are the most common options available: - -`-autostart-off` - Does not immediate start the compiler diff --git a/Source/Docs/unit-tests.rst b/Source/Docs/unit-tests.rst index aed0d07bd6..a30c21a545 100644 --- a/Source/Docs/unit-tests.rst +++ b/Source/Docs/unit-tests.rst @@ -1,5 +1,5 @@ ########## -Unit Tests +Unit tests ########## The MOSA project has an extensive set of unit tests to help validate that the MOSA compiler is emitting correct binary code. diff --git a/Source/Docs/usb-flash-drive-installation.rst b/Source/Docs/usb-flash-drive-installation.rst index 50eba55c1d..2b97c5ba69 100644 --- a/Source/Docs/usb-flash-drive-installation.rst +++ b/Source/Docs/usb-flash-drive-installation.rst @@ -1,89 +1,31 @@ -############################ -USB Flash Drive Installation -############################ +################################# +Installing onto a USB flash drive +################################# While most of the development and testing of MOSA is done using virtualization software, MOSA does indeed boot on real hardware too. There are several ways to put MOSA on a USB flash drive. Below are the most common ones, including the one we'll be following here: -- `Ventoy `__ (All platforms) +- `Ventoy `__ (Windows, Linux), allows reusing the same drive for multiple images and other content - `Rufus `__ (Windows only) -- dd (Linux, `unofficial Windows version `__ exists) +- `dd `__ (Linux, `unofficial Windows version `__ exists) -We'll be following the ``dd`` way here. +We'll be following the ``Ventoy`` path here. Let's get started! -Windows -======= +1. Create a MOSA disk image using the :doc:`launcher` or the :doc:`console launcher` tool. -1. Create a MOSA disk image using the MOSA Launcher Tool. +2. Download the latest version of Ventoy for your platform and extract the archive. -2. Download the unofficial dd utility for Windows, as linked above. +3. Launch the GUI program for your computer's architecture. You should now see a window that looks roughly like this: -3. Open a command prompt window and change directory to the build directory (usually a subfolder under ``%TEMP%``). +.. image:: images/ventoy2disk-gui.png -.. code-block:: text +Go to ``Option``, and select the correct partition style for the target machine (``MBR`` for BIOS, ``GPT`` for UEFI, although some recent BIOS-based machines can still read GPT-based drives). You'll need to follow `extra steps `__ for booting with Secure Boot though. - cd %TEMP%\MOSA +4. Select your drive in the drop down, then, when you're ready, click ``Install``. -4. Copy the ``dd.exe`` executable to the current directory. +.. danger:: When installing Ventoy for the first time, all data on the USB flash drive will be lost! -5. Connect the USB flash drive you wish to ERASE and install the MOSA image onto. +If you just wish to update an existing Ventoy installation on the drive though, click ``Update``. This will not erase any data on the drive and will instead only update Ventoy's partition on the drive. -.. danger:: Data on the USB flash drive will be lost! - -6. Determine the device path for the USB flash drive. - -Get a list all the block devices on your system by typing the command below. Find the one for the USB flash drive you just connected. - -.. danger:: Be careful! A mistype or wrong drive selection may corrupt your hard drive or other storage devices. Do not proceed unless you entirely understand these steps. - -.. code-block:: text - - dd -list - -7. Type the following and substitute the ``of=`` parameter with the device path found in the previous step. - -.. code-block:: text - - dd of=\\?\Device\HarddiskX\PartitionX if=bootimage.img bs=512 –progress - -8. Wait until all the blocks are written to the USB flash drive before disconnecting it. - -9. Now boot a PC with the USB flash drive connected! - -Linux -===== - -1. Create a MOSA disk image using the MOSA Launcher Tool. - -2. Download the unofficial dd utility for Windows, as linked above. - -3. Open a command prompt window and change directory to the build directory (usually a subfolder under ``%TEMP%``). - -.. code-block:: text - - cd /tmp/MOSA - -4. Connect the USB flash drive you wish to ERASE and install the MOSA image onto. - -.. danger:: Data on the USB flash drive will be lost! - -5. Determine the device path for the USB flash drive. - -Get a list all the block devices on your system by typing the command below. Find the one for the USB flash drive you just connected. - -.. danger:: Be careful! A mistype or wrong drive selection may corrupt your hard drive or other storage devices. Do not proceed unless you entirely understand these steps. - -.. code-block:: text - - sudo fdisk -l - -6. Type the following and substitute the ``of=`` parameter with the device path found in the previous step. - -.. code-block:: text - - dd of=/dev/XXXX if=bootimage.img bs=512 status=progress - -7. Wait until all the blocks are written to the USB flash drive before disconnecting it. - -8. Now boot a PC with the USB flash drive connected! +5. Close out of the Ventoy GUI, and navigate to your USB flash drive's main partition. All that's left to do is to copy the disk image you previously created, and paste it onto your USB flash drive, and you're done! diff --git a/Source/Mosa.Linux.sln b/Source/Mosa.Linux.sln index eb6e52476a..2af05227df 100644 --- a/Source/Mosa.Linux.sln +++ b/Source/Mosa.Linux.sln @@ -171,6 +171,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentat Docs\tool-launcher.rst = Docs\tool-launcher.rst Docs\unit-tests.rst = Docs\unit-tests.rst Docs\usb-flash-drive-installation.rst = Docs\usb-flash-drive-installation.rst + Docs\create-core-library.rst = Docs\create-core-library.rst + Docs\source-code-generator.rst = Docs\source-code-generator.rst EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mosa.Compiler.MosaTypeSystem.CLR", "Mosa.Compiler.MosaTypeSystem.CLR\Mosa.Compiler.MosaTypeSystem.CLR.csproj", "{337FA0F7-7E6E-427F-874F-5C43B6D04755}" diff --git a/Source/Mosa.Tool.Explorer.Avalonia/MainWindow.axaml.cs b/Source/Mosa.Tool.Explorer.Avalonia/MainWindow.axaml.cs index d1ea2816b1..10aa561c48 100755 --- a/Source/Mosa.Tool.Explorer.Avalonia/MainWindow.axaml.cs +++ b/Source/Mosa.Tool.Explorer.Avalonia/MainWindow.axaml.cs @@ -98,7 +98,7 @@ public void Initialize(string[] args) SetRequiredSettings(); - graphvizFound = File.Exists(mosaSettings.GraphwizApp); + graphvizFound = File.Exists(mosaSettings.GraphvizApp); UpdateDisplay(); } @@ -630,7 +630,7 @@ private bool ShowGraphviz() var startInfo = new ProcessStartInfo { - FileName = mosaSettings.GraphwizApp, + FileName = mosaSettings.GraphvizApp, Arguments = $"-Tpng -o \"{img}\" \"{dot}\"", CreateNoWindow = true }; diff --git a/Source/Mosa.Tool.Explorer/MainForm.cs b/Source/Mosa.Tool.Explorer/MainForm.cs index 447be3d80c..b8cef5a564 100644 --- a/Source/Mosa.Tool.Explorer/MainForm.cs +++ b/Source/Mosa.Tool.Explorer/MainForm.cs @@ -60,7 +60,7 @@ public CounterEntry(string name, int counter) private Stopwatch Stopwatch = new Stopwatch(); - private bool GraphwizFound = false; + private bool GraphvizFound = false; public MainForm() { @@ -128,7 +128,7 @@ public void LoadArguments(string[] args) SetRequiredSettings(); - GraphwizFound = File.Exists(MosaSettings.GraphwizApp); + GraphvizFound = File.Exists(MosaSettings.GraphvizApp); UpdateDisplay(); } @@ -1111,8 +1111,8 @@ private void UpdateDisplay() _ => cbPlatform.SelectedIndex }; - cbGraphviz.Checked = GraphwizFound; - cbGraphviz.Enabled = GraphwizFound; + cbGraphviz.Checked = GraphvizFound; + cbGraphviz.Enabled = GraphvizFound; } private void UpdateInstructionLabels() @@ -1326,7 +1326,7 @@ private bool DisplayGraphviz() { panel1.Controls.Clear(); - if (!GraphwizFound) + if (!GraphvizFound) return false; if (!cbGraphviz.Checked) @@ -1344,7 +1344,7 @@ private bool DisplayGraphviz() var process = new Process(); - process.StartInfo.FileName = MosaSettings.GraphwizApp; + process.StartInfo.FileName = MosaSettings.GraphvizApp; process.StartInfo.Arguments = $"dot -Tbmp -o \"{bmp}\" \"{dot}\""; process.StartInfo.CreateNoWindow = true; diff --git a/Source/Mosa.Utility.Configuration/AppLocationsSettings.cs b/Source/Mosa.Utility.Configuration/AppLocationsSettings.cs index 3c16242699..b0d88c7120 100644 --- a/Source/Mosa.Utility.Configuration/AppLocationsSettings.cs +++ b/Source/Mosa.Utility.Configuration/AppLocationsSettings.cs @@ -39,7 +39,7 @@ public static void GetAppLocations(MosaSettings mosaSettings) mosaSettings.NdisasmApp = FindNdisasm(); mosaSettings.MkisofsApp = FindMkisofs(); mosaSettings.GDBApp = FindGDB(); - mosaSettings.GraphwizApp = FindGraphwiz(); + mosaSettings.GraphvizApp = FindGraphviz(); } private static string FindQemuX86() @@ -409,7 +409,7 @@ private static string FindQemuEDK2ARM64() }); } - private static string FindGraphwiz() + private static string FindGraphviz() { return IsWindows ? TryFind("dot.exe", diff --git a/Source/Mosa.Utility.Configuration/MOSASettings.cs b/Source/Mosa.Utility.Configuration/MOSASettings.cs index 843e813bde..6ea1d0d8ad 100644 --- a/Source/Mosa.Utility.Configuration/MOSASettings.cs +++ b/Source/Mosa.Utility.Configuration/MOSASettings.cs @@ -706,10 +706,10 @@ public int MultibootVideoHeight set => Settings.SetValue(Name.Multiboot_Video_Height, value); } - public string GraphwizApp + public string GraphvizApp { - get => Settings.GetValue(Name.AppLocation_Graphwiz, null); - set => Settings.SetValue(Name.AppLocation_Graphwiz, value); + get => Settings.GetValue(Name.AppLocation_Graphviz, null); + set => Settings.SetValue(Name.AppLocation_Graphviz, value); } public string OSBootOptions diff --git a/Source/Mosa.Utility.Configuration/Name.cs b/Source/Mosa.Utility.Configuration/Name.cs index 99e5fc594d..f5356afb22 100644 --- a/Source/Mosa.Utility.Configuration/Name.cs +++ b/Source/Mosa.Utility.Configuration/Name.cs @@ -18,7 +18,7 @@ public static class Name public const string AppLocation_QemuImg = "AppLocation.QemuImg"; public const string AppLocation_VmwarePlayer = "AppLocation.VmwarePlayer"; public const string AppLocation_VmwareWorkstation = "AppLocation.VmwareWorkstation"; - public const string AppLocation_Graphwiz = "AppLocation.Graphwiz"; + public const string AppLocation_Graphviz = "AppLocation.Graphviz"; public const string AppLocation_QemuEDK2X86 = "AppLocation.QemuEDK2X86"; public const string AppLocation_QemuEDK2X64 = "AppLocation.QemuEDK2X64"; diff --git a/Source/Mosa.sln b/Source/Mosa.sln index 97ff1ef21f..8e770aea61 100644 --- a/Source/Mosa.sln +++ b/Source/Mosa.sln @@ -193,6 +193,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentat Docs\tool-launcher.rst = Docs\tool-launcher.rst Docs\unit-tests.rst = Docs\unit-tests.rst Docs\usb-flash-drive-installation.rst = Docs\usb-flash-drive-installation.rst + Docs\create-core-library.rst = Docs\create-core-library.rst + Docs\source-code-generator.rst = Docs\source-code-generator.rst EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Mosa.Utility.Disassembler", "Mosa.Utility.Disassembler\Mosa.Utility.Disassembler.csproj", "{E45FBA9E-6F57-4511-8977-D8045DE09622}"