Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP - x64 Support #858

Merged
merged 7 commits into from
Sep 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
310 changes: 310 additions & 0 deletions Source/Docs/MOSA-Runtime-Tables.dot
Original file line number Diff line number Diff line change
@@ -0,0 +1,310 @@
digraph "MOSA Runtime Tables"
{

graph [rankdir = "LR"];
node [fontsize = "16" shape = "ellipse"];
edge [minlen = "4"];

"Key" [
label = "<f0>Key|<f1>~ Denotes field may be zero filled\ndue to no value being available."
shape = "record"
];

"NameString" [
label = "<f0>String Object|<f1>Object Header|<f2>Pointer to Method Table|<f3>String Length|<f4>Unicode String"
shape = "record"
color = "red"
];

"AssemblyListTable" [
label = "<f0>Assembly Table|<f1>Number of Assemblies|<f2>Pointer to Assembly 1|..|Pointer to Assembly N"
shape = "record"
];

"AssemblyListTable":f2 -> "AssemblyDefinition":f0 [
id = 0
];

"AssemblyDefinition" [
label = "<f0>Assembly|<f1>Pointer to Assembly Name|<f2>~Pointer to Custom Attributes|<f3>Flags: IsReflectionOnly|<f4>Number of Types|<f5>Pointer to Type Definition 1|...|Pointer to Type Definition N"
shape = "record"
];

"AssemblyDefinition":f1 -> "NameString":f0 [
id = 0
color = "red"
];

"AssemblyDefinition":f2 -> "CustomAttributesTable":f0 [
id = 0
];

"AssemblyDefinition":f5 -> "TypeDefinition":f0 [
id = 0
color = "blue"
];

"TypeDefinition" [
label = "<f0>Type Definition\n(contains Method Table)|<f1>Pointer to Type Name|<f2>~Pointer to Custom Attributes|<f3>Type Code & Attributes|<f4>Type Size|<f5>Pointer to Assembly|<f6>~Pointer to Parent Type|<f7>~Pointer to Declaring Type|<f8>~Pointer to Element Type|<f9>~Pointer to Default Constructor Method|<f10>~Pointer to Properties Table|<f11>~Pointer to Fields Table|<f12>~Pointer to Interface Slot Table|<f13>~Pointer to Interface Bitmap|<f14>Number of Methods|<f15>Pointer to Method 1|...|Pointer to Method N|<f16>Pointer to Method Definition 1|...|Pointer to Method Definition N"
shape = "record"
color = "blue"
];

"TypeDefinition":f1 -> "NameString":f0 [
id = 0
color = "red"
];

"TypeDefinition":f2 -> "CustomAttributesTable":f0 [
id = 0
];

"TypeDefinition":f5 -> "AssemblyDefinition":f0 [
id = 0
];

"TypeDefinition":f6 -> "TypeDefinition":f0 [
id = 0
color = "blue"
];

"TypeDefinition":f9 -> "MethodDefinition":f0 [
id = 0
color = "green"
];

"TypeDefinition":f10 -> "PropertiesTable":f0 [
id = 0
];

"TypeDefinition":f11 -> "FieldsTable":f0 [
id = 0
];

"TypeDefinition":f12 -> "InterfaceSlotTable":f0 [
id = 0
];

"TypeDefinition":f16 -> "MethodDefinition":f0 [
id = 0
];

"FieldsTable" [
label = "<f0>Fields Table|<f1>Number of Fields|<f1>Pointer to Field Definition 1|...|Pointer to Field Definition N"
shape = "record"
];

"FieldsTable":f2 -> "FieldDefinition":f0 [
id = 0
];

"FieldDefinition" [
label = "<f0>Field Definition|<f1>Pointer to Field Name|<f2>~Pointer to Custom Attributes|<f3>Field Attributes|<f4>Pointer to Field Type|<f5>~Address|<f6>Offset / Size"
shape = "record"
];

"FieldDefinition":f1 -> "NameString":f0 [
id = 0
color = "red"
];

"FieldDefinition":f2 -> "CustomAttributesTable":f0 [
id = 0
];

"FieldDefinition":f4 -> "TypeDefinition":f0 [
id = 0
color = "blue"
];

"PropertiesTable" [
label = "<f0>Properties Table|<f1>Number of Properties|<f1>Pointer to Property Definition 1|...|Pointer to Property Definition N"
shape = "record"
];

"PropertiesTable":f2 -> "PropertyDefinition":f0 [
id = 0
];

"PropertyDefinition" [
label = "<f0>Property Definition|<f1>Pointer to Property Name|<f2>~Pointer to Custom Attributes|<f3>Property Attributes|<f4>Pointer to Property Type|<f5>~Pointer to Getter Method Definition|<f6>~Pointer to Setter Method Defiinition"
shape = "record"
];

"PropertyDefinition":f1 -> "NameString":f0 [
id = 0
color = "red"
];

"PropertyDefinition":f2 -> "CustomAttributesTable":f0 [
id = 0
];

"PropertyDefinition":f4 -> "TypeDefinition":f0 [
id = 0
color = "blue"
];

"PropertyDefinition":f5 -> "MethodDefinition":f0 [
id = 0
color = "green"
];

"PropertyDefinition":f6 -> "MethodDefinition":f0 [
id = 0
color = "green"
];

"MethodLookupTable" [
label = "<f0>Method Lookup Table|Number of Methods|<f1>Pointer to Method (Starting Address)|<f2>Method Size|<f3>Pointer to Method Definition"
shape = "record"
];

"MethodLookupTable":f3 -> "MethodDefinition":f0 [
id = 0
color = "green"
];

"ProtectedRegionTable" [
label = "<f0>Protected Region Table|<f1>Number of Regions|<f2>Pointer to Protected Region Definition 1|...|Protected Region Definition N"
shape = "record"
];

"ProtectedRegionTable":f2 -> "ProtectedRegionDefinition":f0 [
id = 0
];

"ProtectedRegionDefinition" [
label = "<f0>Protected Region Definition|<f1>Region Start|<f2>Region End|<f3>Region Handler|<f4>Exception Handler Type|<f5>Pointer to Exception Type"
shape = "record"
];

"ProtectedRegionDefinition":f5 -> "TypeDefinition":f0 [
id = 0
color = "blue"
];

"InterfaceSlotTable" [
label = "<f0>Interface Slot Table|<f1>Number of Interface Method Tables|<f2>Pointer to Interface Method Table 1|...|Pointer to Interface Method Table N"
shape = "record"
];

"InterfaceSlotTable":f2 -> "InterfaceMethodTable":f0 [
id = 0
];

"InterfaceMethodTable" [
label = "<f0>Interface Method Table|<f1>Pointer to Interface Type|<f2>Number of Methods|<f3>Pointer to Method Definition 1|..|Pointer to Method Definition N"
shape = "record"
];

"InterfaceMethodTable":f1 -> "TypeDefinition":f0 [
id = 0
color = "blue"
];

"InterfaceMethodTable":f3 -> "MethodDefinition":f0 [
id = 0
color = "green"
];

"MethodDefinition" [
label = "<f0>Method Definition|<f1>Pointer to Method Name|<f2>~Pointer to Custom Attributes|<f3>Method Attributes|<f4>Local & Parameter Stack Size|<f5>Pointer to Method|<f6>Pointer to Return Type Definition|<f7>~Pointer to Protected Region Table|<f8>Pointer to GC Tracking Information|<f9>Number of Parameters|<f10>Pointer to Parameter Definition 1|...|Pointer to Parameter Definition N"
shape = "record"
color = "green"
];

"MethodDefinition":f7 -> "ProtectedRegionTable":f0 [
id = 0
];

"MethodDefinition":f1 -> "NameString":f0 [
id = 0
color = "red"
];

"MethodDefinition":f2 -> "CustomAttributesTable":f0 [
id = 0
];

"MethodDefinition":f6 -> "TypeDefinition":f0 [
id = 0
color = "blue"
];

"MethodDefinition":f8 -> "GCTrackingInformation":f0 [
id = 0
];

"MethodDefinition":f10 -> "ParameterDefinition":f0 [
id = 0
];

"ParameterDefinition" [
label = "<f0>Parameter Definition|<f1>Pointer to Parameter Name|<f2>~Pointer to Custom Attributes|<f3>Parameter Attributes|<f4>Pointer to Parameter Type"
shape = "record"
];

"ParameterDefinition":f1 -> "NameString":f0 [
id = 0
color = "red"
];

"ParameterDefinition":f2 -> "CustomAttributesTable":f0 [
id = 0
];

"ParameterDefinition":f4 -> "TypeDefinition":f0 [
id = 0
color = "blue"
];

"GCTrackingInformation" [
label = "<f0>GC Tracking Information|TODO"
shape = "record"
];

"CustomAttributesTable" [
label = "<f0>Custom Attributes Table|<f1>Number of Attributes|<f2>Pointer to Custom Attribute 1|...|Pointer to Custom Attribute N"
shape = "record"
];

"CustomAttributesTable":f2 -> "CustomAttribute":f0 [
id = 0
];

"CustomAttribute" [
label = "<f0>Custom Attribute|<f1>Pointer to Attribute Type|<f2>Pointer to Constructor Method|<f3>Number of Arguments|<f4>Pointer to Argument 1|...|Pointer to Argument N"
shape = "record"
];

"CustomAttribute":f1 -> "TypeDefinition":f0 [
id = 0
color = "blue"
];

"CustomAttribute":f2 -> "MethodDefinition":f0 [
id = 0
color = "green"
];

"CustomAttribute":f4 -> "CustomAttributeArgument":f0 [
id = 0
];

"CustomAttributeArgument" [
label = "<f0>Custom Attribute Argument|<f1>~Pointer to Argument Name|<f2>Is Argument a Field|<f3>Pointer to Argument Type|<f4>Argument Size|<f3>Argument"
shape = "record"
];

"CustomAttributeArgument":f1 -> "NameString":f0 [
id = 0
color = "red"
];

"CustomAttributeArgument":f3 -> "TypeDefinition":f0 [
id = 0
color = "blue"
];

}
16 changes: 9 additions & 7 deletions Source/Docs/conf.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Configuration file for the Sphinx documentation builder.
#
# This file only contains a selection of the most common options. For a full
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html

# -- Path setup --------------------------------------------------------------

# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
# import os
Expand All @@ -21,17 +21,16 @@

# -- General configuration ---------------------------------------------------

# Add any Sphinx extension module names here, as strings. They can be
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autosectionlabel',
extensions = ['sphinx.ext.autosectionlabel',
'sphinx.ext.autodoc',
'sphinx.ext.intersphinx',
'sphinxcontrib.httpdomain',
'sphinx_tabs.tabs',
'sphinx-prompt',
]
'sphinx.ext.graphviz',]

# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
Expand All @@ -48,7 +47,7 @@
html_theme = "sphinx_rtd_theme"

# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']

Expand All @@ -57,3 +56,6 @@

def setup(app):
app.add_css_file('css/sphinx_prompt_css.css')

# -- GraphViz configuration ----------------------------------
graphviz_output_format = 'svg'
7 changes: 7 additions & 0 deletions Source/Docs/contents.txt
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,13 @@
unit-tests
usb-flash-drive-installation
baremetal

.. toctree::
:caption: Runtime
:hidden:
:maxdepth: 1

runtime-tables

.. toctree::
:caption: Contribute
Expand Down
7 changes: 7 additions & 0 deletions Source/Docs/runtime-tables.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
###################
MOSA Runtime Tables
###################

This diagram represents the internal runtime tables within the MOSA virtual machine:

.. graphviz:: mosa-runtime-tables.dot
1 change: 1 addition & 0 deletions Source/Docs/settings-options.rst
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ Multiboot Settings
Multiboot.Video.Width,Video Width
Multiboot.Video.Height,Video Height
Multiboot.Video.Depth,Video Depth
Multiboot.InitialStackAddress,Initial Stack Address

Debugger Settings
-----------------
Expand Down
Loading