diff options
| author | Amlal El Mahrouss <113760121+Amlal-ElMahrouss@users.noreply.github.com> | 2024-03-21 20:46:10 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <113760121+Amlal-ElMahrouss@users.noreply.github.com> | 2024-03-21 20:46:10 +0100 |
| commit | b4963da50dd24d15ed780eee7d01bda4efe486ea (patch) | |
| tree | 301e42d40e6aefab011330ea2a04d2eb17926aac | |
| parent | d04e7ec0bf1c5ad02b334ba68e992e85eb7b86ac (diff) | |
Toolchain: Fixes and improvements for amd64 assembler and assembly preprocessor.
| -rw-r--r-- | Private/Frontend/Compiler/compiler_command.d | 4 | ||||
| -rw-r--r-- | Private/Frontend/Compiler/compiler_start.d | 18 | ||||
| -rw-r--r-- | Private/Frontend/Compiler/makefile | 2 | ||||
| -rw-r--r-- | Private/Frontend/Compiler/man/mpcc.8 | 2 | ||||
| -rw-r--r-- | Private/Frontend/Compiler/man/mpcc.rtf | 277 | ||||
| -rw-r--r-- | Private/Toolchain/bin/Source/16bit_amd64.s | 5 | ||||
| -rw-r--r-- | Private/Toolchain/bin/Source/hello_world.cc | 4 | ||||
| -rw-r--r-- | Private/Toolchain/bin/Source/hello_world.s | 9 | ||||
| -rw-r--r-- | Private/Toolchain/bin/Source/preprocessor.64x | 1 | ||||
| -rw-r--r-- | Private/Toolchain/bin/Source/preprocessor.64x.pp | 8 | ||||
| -rw-r--r-- | Private/Toolchain/bpp.cc | 6 | ||||
| -rw-r--r-- | Private/Toolchain/cc.cc | 14 | ||||
| -rw-r--r-- | Private/Toolchain/ccplus.cc | 272 | ||||
| -rw-r--r-- | Private/Toolchain/i64asm.cc | 38 |
14 files changed, 345 insertions, 315 deletions
diff --git a/Private/Frontend/Compiler/compiler_command.d b/Private/Frontend/Compiler/compiler_command.d index ef84919..19d2f21 100644 --- a/Private/Frontend/Compiler/compiler_command.d +++ b/Private/Frontend/Compiler/compiler_command.d @@ -28,12 +28,12 @@ public class Platform { public static string getIncludePath() { - return "C:/SDK/Public/Kits/"; + return "/C/SDK/Public/Kits/"; } public static string getKernelPath() { - return "C:/SDK/Private/Kits/"; + return "/C/SDK/Private/Kits/"; } } diff --git a/Private/Frontend/Compiler/compiler_start.d b/Private/Frontend/Compiler/compiler_start.d index 300beac..e65d1c3 100644 --- a/Private/Frontend/Compiler/compiler_start.d +++ b/Private/Frontend/Compiler/compiler_start.d @@ -15,20 +15,6 @@ module Frontend.Compiler.compiler_start; import Frontend.Compiler.compiler_command; import std.container.dlist; -///Authors: Amlal EL Mahrouss -///Examples: mpcc_summon_manual("foo"); -void mpcc_summon_manual(string path) -{ - import core.stdc.stdlib; - import std.string; - import std.file; - - string base = "man "; - string extension = ".8"; - - core.stdc.stdlib.system(toStringz(base ~ path ~ extension)); -} - void main(string[] args) { import std.range, std.stdio; @@ -59,9 +45,7 @@ void main(string[] args) else if (arg == "--help" || arg == "-h") { - writeln("mpcc: summoning manual entry for mpcc..."); - mpcc_summon_manual("mpcc"); - + writeln("mpcc: no help available."); return; } else if (arg == "-c") diff --git a/Private/Frontend/Compiler/makefile b/Private/Frontend/Compiler/makefile index 8a03fd0..47f8429 100644 --- a/Private/Frontend/Compiler/makefile +++ b/Private/Frontend/Compiler/makefile @@ -10,4 +10,4 @@ # build mpcc .PHONY: mpcc-build mpcc-build: - ldc2 -I../ $(wildcard *.d) -ofmpcc
\ No newline at end of file + dmd -I../ $(wildcard *.d) -ofmpcc
\ No newline at end of file diff --git a/Private/Frontend/Compiler/man/mpcc.8 b/Private/Frontend/Compiler/man/mpcc.8 index 370a49a..152b619 100644 --- a/Private/Frontend/Compiler/man/mpcc.8 +++ b/Private/Frontend/Compiler/man/mpcc.8 @@ -1,6 +1,6 @@ .Dd Jan 21, 2024 .Dt mpcc 1.11 -.Os MultiProcessor +.Os MultiProcessorCC .Sh NAME .Nm mpcc diff --git a/Private/Frontend/Compiler/man/mpcc.rtf b/Private/Frontend/Compiler/man/mpcc.rtf new file mode 100644 index 0000000..b825dfa --- /dev/null +++ b/Private/Frontend/Compiler/man/mpcc.rtf @@ -0,0 +1,277 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;} +{\f42\fbidi \fswiss\fcharset0\fprq2 Aptos Display;}{\f43\fbidi \fswiss\fcharset0\fprq2 Aptos;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2 Aptos Display;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2 Aptos;} +{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f46\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f47\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f49\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f50\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f51\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f52\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f53\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f54\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f386\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}{\f387\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;} +{\f389\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f390\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f393\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}{\f394\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);} +{\f466\fbidi \fswiss\fcharset238\fprq2 Aptos Display CE;}{\f467\fbidi \fswiss\fcharset204\fprq2 Aptos Display Cyr;}{\f469\fbidi \fswiss\fcharset161\fprq2 Aptos Display Greek;}{\f470\fbidi \fswiss\fcharset162\fprq2 Aptos Display Tur;} +{\f473\fbidi \fswiss\fcharset186\fprq2 Aptos Display Baltic;}{\f474\fbidi \fswiss\fcharset163\fprq2 Aptos Display (Vietnamese);}{\f476\fbidi \fswiss\fcharset238\fprq2 Aptos CE;}{\f477\fbidi \fswiss\fcharset204\fprq2 Aptos Cyr;} +{\f479\fbidi \fswiss\fcharset161\fprq2 Aptos Greek;}{\f480\fbidi \fswiss\fcharset162\fprq2 Aptos Tur;}{\f483\fbidi \fswiss\fcharset186\fprq2 Aptos Baltic;}{\f484\fbidi \fswiss\fcharset163\fprq2 Aptos (Vietnamese);} +{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Aptos Display CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Aptos Display Cyr;} +{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Aptos Display Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Aptos Display Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Aptos Display Baltic;} +{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Aptos Display (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Aptos CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Aptos Cyr;} +{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Aptos Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Aptos Tur;}{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Aptos Baltic;} +{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Aptos (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}} +{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; +\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red0\green0\blue0;\red0\green0\blue0;\caccentone\ctint255\cshade191\red15\green71\blue97; +\ctextone\ctint166\cshade255\red89\green89\blue89;\ctextone\ctint216\cshade255\red39\green39\blue39;\ctextone\ctint191\cshade255\red64\green64\blue64;}{\*\defchp \f31506\fs22\kerning2 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 +\ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\kerning2\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\s1\ql \li0\ri0\sb360\sa80\sl259\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs40\alang1025 \ltrch\fcs0 +\fs40\cf19\lang1033\langfe1033\kerning2\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink15 \sqformat \spriority9 \styrsid14445798 heading 1;}{\s2\ql \li0\ri0\sb160\sa80\sl259\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs32\alang1025 \ltrch\fcs0 +\fs32\cf19\lang1033\langfe1033\kerning2\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink16 \sunhideused \sqformat \spriority9 \styrsid14445798 heading 2;}{\s3\ql \li0\ri0\sb160\sa80\sl259\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs28\alang1025 \ltrch\fcs0 +\fs28\cf19\lang1033\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink17 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid14445798 heading 3;}{\s4\ql \li0\ri0\sb80\sa40\sl259\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs22\alang1025 \ltrch\fcs0 +\i\fs22\cf19\lang1033\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink18 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid14445798 heading 4;}{\s5\ql \li0\ri0\sb80\sa40\sl259\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs22\alang1025 \ltrch\fcs0 +\fs22\cf19\lang1033\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink19 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid14445798 heading 5;}{\s6\ql \li0\ri0\sb40\sl259\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs22\alang1025 \ltrch\fcs0 +\i\fs22\cf20\lang1033\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink20 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid14445798 heading 6;}{\s7\ql \li0\ri0\sb40\sl259\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs22\alang1025 \ltrch\fcs0 +\fs22\cf20\lang1033\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink21 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid14445798 heading 7;}{\s8\ql \li0\ri0\sl259\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31503\afs22\alang1025 \ltrch\fcs0 +\i\fs22\cf21\lang1033\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink22 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid14445798 heading 8;}{\s9\ql \li0\ri0\sl259\slmult1 +\keep\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs22\alang1025 \ltrch\fcs0 +\fs22\cf21\lang1033\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink23 \ssemihidden \sunhideused \sqformat \spriority9 \styrsid14445798 heading 9;}{\*\cs10 \additive +\ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\kerning2\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused Normal Table;}{\*\cs15 +\additive \rtlch\fcs1 \af31503\afs40 \ltrch\fcs0 \fs40\cf19\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink1 \spriority9 \styrsid14445798 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \af31503\afs32 \ltrch\fcs0 +\fs32\cf19\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink2 \spriority9 \styrsid14445798 Heading 2 Char;}{\*\cs17 \additive \rtlch\fcs1 \af31503\afs28 \ltrch\fcs0 \fs28\cf19\dbch\af31501 +\sbasedon10 \slink3 \ssemihidden \spriority9 \styrsid14445798 Heading 3 Char;}{\*\cs18 \additive \rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf19\dbch\af31501 \sbasedon10 \slink4 \ssemihidden \spriority9 \styrsid14445798 Heading 4 Char;}{\*\cs19 \additive +\rtlch\fcs1 \af31503 \ltrch\fcs0 \cf19\dbch\af31501 \sbasedon10 \slink5 \ssemihidden \spriority9 \styrsid14445798 Heading 5 Char;}{\*\cs20 \additive \rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf20\dbch\af31501 +\sbasedon10 \slink6 \ssemihidden \spriority9 \styrsid14445798 Heading 6 Char;}{\*\cs21 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 \cf20\dbch\af31501 \sbasedon10 \slink7 \ssemihidden \spriority9 \styrsid14445798 Heading 7 Char;}{\*\cs22 \additive +\rtlch\fcs1 \ai\af31503 \ltrch\fcs0 \i\cf21\dbch\af31501 \sbasedon10 \slink8 \ssemihidden \spriority9 \styrsid14445798 Heading 8 Char;}{\*\cs23 \additive \rtlch\fcs1 \af31503 \ltrch\fcs0 \cf21\dbch\af31501 +\sbasedon10 \slink9 \ssemihidden \spriority9 \styrsid14445798 Heading 9 Char;}{\s24\ql \li0\ri0\sa80\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\contextualspace \rtlch\fcs1 \af31503\afs56\alang1025 \ltrch\fcs0 +\fs56\expnd-2\expndtw-10\lang1033\langfe1033\kerning28\loch\f31502\hich\af31502\dbch\af31501\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink25 \sqformat \spriority10 \styrsid14445798 Title;}{\*\cs25 \additive \rtlch\fcs1 \af31503\afs56 +\ltrch\fcs0 \fs56\expnd-2\expndtw-10\kerning28\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink24 \spriority10 \styrsid14445798 Title Char;}{\s26\ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ilvl1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31503\afs28\alang1025 \ltrch\fcs0 \fs28\expnd3\expndtw15\cf20\lang1033\langfe1033\kerning2\loch\f31506\hich\af31506\dbch\af31501\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext0 \slink27 \sqformat \spriority11 \styrsid14445798 Subtitle;}{\*\cs27 \additive \rtlch\fcs1 \af31503\afs28 \ltrch\fcs0 \fs28\expnd3\expndtw15\cf20\dbch\af31501 \sbasedon10 \slink26 \spriority11 \styrsid14445798 Subtitle Char;}{ +\s28\qc \li0\ri0\sb160\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ai\af31507\afs22\alang1025 \ltrch\fcs0 \i\f31506\fs22\cf22\lang1033\langfe1033\kerning2\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext0 \slink29 \sqformat \spriority29 \styrsid14445798 Quote;}{\*\cs29 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf22 \sbasedon10 \slink28 \spriority29 \styrsid14445798 Quote Char;}{\s30\ql \li720\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\kerning2\cgrid\langnp1033\langfenp1033 +\sbasedon0 \snext30 \sqformat \spriority34 \styrsid14445798 List Paragraph;}{\*\cs31 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf19 \sbasedon10 \sqformat \spriority21 \styrsid14445798 Intense Emphasis;}{\s32\qc \li864\ri864\sb360\sa360\sl259\slmult1 +\widctlpar\brdrt\brdrs\brdrw10\brsp200\brdrcf19 \brdrb\brdrs\brdrw10\brsp200\brdrcf19 \wrapdefault\aspalpha\aspnum\faauto\adjustright\rin864\lin864\itap0 \rtlch\fcs1 \ai\af31507\afs22\alang1025 \ltrch\fcs0 +\i\f31506\fs22\cf19\lang1033\langfe1033\kerning2\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink33 \sqformat \spriority30 \styrsid14445798 Intense Quote;}{\*\cs33 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i\cf19 +\sbasedon10 \slink32 \spriority30 \styrsid14445798 Intense Quote Char;}{\*\cs34 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\scaps\expnd1\expndtw5\cf19 \sbasedon10 \sqformat \spriority32 \styrsid14445798 Intense Reference;}{\*\cs35 \additive \rtlch\fcs1 +\ai\af0 \ltrch\fcs0 \i\cf22 \sbasedon10 \sqformat \spriority19 \styrsid6366327 Subtle Emphasis;}{\*\cs36 \additive \rtlch\fcs1 \ai\af0 \ltrch\fcs0 \i \sbasedon10 \sqformat \spriority20 \styrsid8999193 Emphasis;}{\*\cs37 \additive \rtlch\fcs1 \ab\af0 +\ltrch\fcs0 \b \sbasedon10 \sqformat \spriority22 \styrsid8999193 Strong;}}{\*\rsidtbl \rsid4093522\rsid6366327\rsid7217618\rsid7889832\rsid8999193\rsid9334252\rsid9440993\rsid9850661\rsid10028728\rsid10904142\rsid11691300\rsid13123636\rsid13581669 +\rsid14445798}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\author The geek 64}{\operator The geek 64}{\creatim\yr2024\mo3\dy21\hr16\min12} +{\revtim\yr2024\mo3\dy21\hr16\min17}{\version11}{\edmins5}{\nofpages1}{\nofwords39}{\nofchars228}{\nofcharsws266}{\vern91}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} +\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect +\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\noxlattoyen +\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1440\dgvorigin1440\dghshow1\dgvshow1 +\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct +\asianbrkrule\rsidroot14445798\newtblstyruls\nogrowautofit\usenormstyforlist\noindnmbrts\felnbrelev\nocxsptable\indrlsweleven\noafcnsttbl\afelev\utinl\hwelev\spltpgpar\notcvasp\notbrkcnstfrctbl\notvatxbx\krnprsnet\cachedcolbal \nouicompat \fet0 +{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang +{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang +{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}} +\pard\plain \ltrpar\s24\ql \li0\ri0\sa80\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6366327\contextualspace \rtlch\fcs1 \af31503\afs56\alang1025 \ltrch\fcs0 +\fs56\expnd-2\expndtw-10\lang1033\langfe1033\kerning28\loch\af31502\hich\af31502\dbch\af31501\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid6366327 \hich\af31502\dbch\af31501\loch\f31502 H\hich\af31502\dbch\af31501\loch\f31502 +Core }{\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid7217618 \hich\af31502\dbch\af31501\loch\f31502 Programmer\loch\af31502\dbch\af31501\hich\f31502 \rquote \hich\af31502\dbch\af31501\loch\f31502 s }{\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid6366327 +\hich\af31502\dbch\af31501\loch\f31502 Manual}{\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid4093522 +\par }\pard\plain \ltrpar\s26\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ilvl1\adjustright\rin0\lin0\itap0\pararsid6366327 \rtlch\fcs1 \af31503\afs28\alang1025 \ltrch\fcs0 +\fs28\expnd3\expndtw15\cf20\lang1033\langfe1033\kerning2\loch\af31506\hich\af31506\dbch\af31501\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31503 \ltrch\fcs0 \insrsid6366327 \hich\af31506\dbch\af31501\loch\f31506 MPCC +\par }\pard\plain \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid6366327 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 +\f31506\fs22\lang1033\langfe1033\kerning2\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid6366327 +\par }{\rtlch\fcs1 \ai\af31507 \ltrch\fcs0 \cs35\i\cf22\insrsid6366327 The MultiProcessor C/C++ Compiler Collection.}{\rtlch\fcs1 \ai\af31507 \ltrch\fcs0 \cs35\i\cf22\insrsid8999193 +\par +\par }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid8999193 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \cs37\insrsid8999193\charrsid8999193 The}{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 +\cs37\b\insrsid8999193 MPCC }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \cs37\insrsid8999193\charrsid8999193 command}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \cs37\insrsid8999193 is used to generate apps from C/C++ source code. }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 +\cs37\b\insrsid8999193\charrsid8999193 MPCC}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \cs37\insrsid8999193 is compatible with C++20 and C17 by default. +\par }{\rtlch\fcs1 \ab\af31507 \ltrch\fcs0 \cs37\b\insrsid8999193\charrsid9440993 MPCC}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \cs37\insrsid8999193 }{\rtlch\fcs1 \af31507 \ltrch\fcs0 \cs37\insrsid9850661 is also able to generate FAT binaries. For +multiple architectures.}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \cs37\insrsid8999193\charrsid8999193 +\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a +9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad +5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 +b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 +0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 +a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f +c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 +0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 +a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 +6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b +4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b +4757e8d3f729e245eb2b260a0238fd010000ffff0300504b0304140006000800000021006780fcb48e070000cd200000160000007468656d652f7468656d652f +7468656d65312e786d6cec594b8f1bb911be07c87f68f45d56b71e2d696079a1a767ed19dbb064077be448949a1e76b341523316160602ef299700017617b904 +c82d8720c80259208b5cf2630cd848363f224576ab454a94e70103318299b9a8d95f153f5615abaac9fb5fbc4ea87781b9202cedfae1bdc0f7703a6373922ebb +fe8be9b8d2f63d21513a4794a5b8ebafb1f0bf78f0cb5fdc474732c609f6403e1547a8ebc7526647d5aa98c13012f758865378b7603c41121ef9b23ae7e812f4 +26b45a0b82a89a2092fa5e8a1250fb74b12033ec4d954affc146f988c2632a851a98513e51aab125a1b1f3f35021c45a0c28f72e10edfa30cf9c5d4ef16be97b +1409092fba7ea0fffcea83fb55745408517940d6901bebbf42ae10989fd7f49c7c79564e1a8c6aed4658ead7002af771a3b6fa2ff569009acd60a539175367d8 +8c8276adc01aa0fca74377a715d66dbca1bfbec739ec44fd5ac3d2af41b9fec61e3e187746c3a685d7a01cdfdcc3f7825abf53b7f01a94e3a33d7c63d46bd546 +165e83624ad2f37d74d46ab7a3025d42168c1e3be19d280a5ac302be45413494d1a5a658b0541e8ab504bd627c0c0005a44892d493eb0c2fd00ca2b8974926bc +211119456bdfcb50ca040c07b53084d06b04b5f25f5b1c1d6164482b5ec044ec0d293e9e987192c9aeff08b4fa06e4fd4f3fbd7bfbe3bbb77f7ff7cd37efdefe +d53b21cb58e6aa2cb963942e4db99ffff4bbfffce1d7debffff6c79fbffdce8d1726fec35f7ef3e11ffffc987ad86a5b53bcfffe870f3ffef0fef7bffdd79fbf +7568ef717466c2a724c1c27b822fbde72c81056a53d8fcf119bf99c43446c494e8a54b8152a46671e81fc9d8423f59238a1cb83eb6edf89243aa71011fae5e59 +8427315f49e2d0f8384e2ce02963b4cfb8d30a8fd55c8699a7ab74e99e9caf4cdc73842e5c730f506a7979b4ca20c71297ca418c2d9acf284a255ae2144b4fbd +63e7183b56f71521965d4fc98c33c116d2fb8a787d449c269992332b9ab642c72401bfac5d04c1df966d4e5f7a7d465dab1ee20b1b097b035107f929a696191f +a29544894be51425d434f80992b18be464cd67266e2424787a8929f346732c844be62987f51a4e7f8c20bb39dd7e4ad7898de4929cbb749e20c64ce4909d0f62 +94642eec84a4b189fd529c438822ef19932ef829b377887a063fa0f4a0bb5f126cb9fbea6cf002b29c49691b20eacd8a3b7cf910332b7e276bba40d8956a7a3c +b1526c8f136774f4574b2bb44f30a6e812cd31f65e7ce960d0679965f32de94731649563ec0aac47c88e55f59c6201bd926a6ef6f3e4091156c84ef0921de073 +bade493c6b9426881fd2fc04bc6eda7c74c661333a283ca5b37313f884400f08f1e234ca53013a8ce03ea8f5598cac02a69e853b5ed7dcf2df75f618eccb5716 +8d6bec4b90c1379681c46eca7cd4365344ad09b6013345c43b71a55b10b1dcbf1551c5558bad9c720b7bd36edd00dd91d5f42424bda203fadf743e8e40fc343d +8f5bb195b06ed8ed1c4a28c73b3dce21dc6e6733607c4e3effc6668856e9330cb5643f6bddf535777d8dff7fdfd71cdacf77ddcca19ee3ae9bf1a1cbb8eb668a +03964fd3cd6c1b18e86dd421437ed8a38f7e9283273f0b42e944ae293e11faf047c037cd7c0c834a4e9f7ae2f224308be1a72a733081855b72a4653ccee4af88 +8c2731cae08428f49592a528542f8597310107477ad8a95be1e92a3965f3fcc0539f3005796515486ec783261c3de5e37058257374d42a06153f7daa0a7c35db +a53e6cdd1050b23721614c6693a83b48b4368357905067679f8645c7c1a2add46f5cb5670aa0567a053eba3df854effacd86220427e562060dfa5cf92977f5c6 +bbda999fd2d3878c6945001c2ee62b81a3f9d2d31dc5f5e0f2d4eaf250bb86a72d12da297958d924b46574832762f8142ea2538d5e87c64d7dddd9bad4a2a74c +a1e783f8ded268b53fc6e2b6be06b9dddc40533353d0d4bbecfa51bd0921334359d75fc0c131fc4c32881da1bebb105dc2edcb4cf27cc3df26b3645cc8211271 +6e709d7472f7244462ee5192747db5fcd20d34d53944730b6b90103e5b721d482b9f1b3970baed64bc58e09934dd6e8c284be78f90e1f35ce17cabc56f0f5692 +6c05ee9ec4f34bef8caef8730421d66c85ca807322e0fe20ccad392770215626b26dfced14a622f99b37523a86f27144b3181515c54ce6395cd793928e7e2a6d +603c156b06831a26290ae1d9521558d3a856352d4b57cee160d5bd5a4859ce489adb9a6965155535dd59cc9a615306766c79bb226fb0da9818729a59e1f3d4bd +9b723b9b5cb7d3279455020c5edaef76a5dfa0b69dcca2a618efa76195b38b51bb766c167805b5eb140923eb471bb53b762b6b84733a18bc55e507b9dda885a1 +c5a6afd496d637e7e6e5363b7b05c963085dee8a4aa15d09a7bb1c415736d13d499e36608bbc96c5d6805fde8a93aeff75d0ec3506b5e6a012b49ba34aa3de08 +2aed66af5ee9359bf570d40c8361bff6060a8b8c93b099dfda8fe11283ae8bbb7b3dbe777f9f6cee69eecd585265fa7ebeaa89ebfbfbb076f8fede239074be8e +6ae34ebdd38f2a9d7a6f5c690cfbed4a6710f52bc368d01a8e878366bb337ee37b171adce8d5078d68d4ae44e16050694481a2dfee545a8d5aadd768f5daa346 +ef4dd1c6c0caf3f451d802ccab793df82f000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d +652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced +0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e27 +4a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cc +e0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000 +005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000000000003001 +00005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d65 +2f7468656d652f7468656d654d616e616765722e786d6c504b01022d00140006000800000021006780fcb48e070000cd20000016000000000000000000000000 +00d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000000000000000 +0000000000980a00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000930b00000000} +{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d +617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 +6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 +656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} +{\*\latentstyles\lsdstimax376\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; +\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; +\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; +\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; +\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; +\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; +\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; +\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; +\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; +\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; +\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; +\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; +\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; +\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; +\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; +\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; +\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; +\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; +\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; +\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; +\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; +\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; +\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; +\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; +\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; +\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; +\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; +\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; +\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Mention; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hashtag;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Unresolved Mention;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Smart Link;}}{\*\datastore 01050000 +02000000180000004d73786d6c322e534158584d4c5265616465722e362e30000000000000000000000e0000 +d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffdffffff04000000feffffff05000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff010000000c6ad98892f1d411a65f0040963251e5000000000000000000000000d009 +88e4a27bda0103000000c0020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff020000000000000000000000000000000000000000000000c0e287e4a27bda01 +d00988e4a27bda010000000000000000000000004500de005700cb00d400d6003500ca004f005500da00cc003000cc00c8004300ca004a00cc004200d60051003d003d000000000000000000000000000000000032000101ffffffffffffffff030000000000000000000000000000000000000000000000c0e287e4a27b +da01d00988e4a27bda010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000 +00000000000000000000000000000000210100000000000001000000020000000300000004000000feffffff060000000700000008000000090000000a000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c3f786d6c2076657273696f6e3d22312e3022207374616e64616c6f6e653d226e6f223f3e3c623a536f757263657320786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666 +696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222053656c65637465645374796c653d225c41504153 +6978746845646974696f6e4f66666963654f6e6c696e652e78736c22205374796c654e616d653d22415041222056657273696f6e3d2236223e3c2f623a536f75726365733e000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f6469 +6e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b44334142453531332d454136372d344533392d414336412d4341303241383942303144397d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70 +656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000 +0000000000000000000000000000000000000000000000000000000000000500000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000746f6d586d6c223e3c64733a736368656d61526566733e3c64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f7267 +2f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f72654974656d3e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file diff --git a/Private/Toolchain/bin/Source/16bit_amd64.s b/Private/Toolchain/bin/Source/16bit_amd64.s new file mode 100644 index 0000000..a22248b --- /dev/null +++ b/Private/Toolchain/bin/Source/16bit_amd64.s @@ -0,0 +1,5 @@ +#bits 16 + +export .text BIOSStartup + +mov cx, ax
\ No newline at end of file diff --git a/Private/Toolchain/bin/Source/hello_world.cc b/Private/Toolchain/bin/Source/hello_world.cc index 7537bf1..8a179b4 100644 --- a/Private/Toolchain/bin/Source/hello_world.cc +++ b/Private/Toolchain/bin/Source/hello_world.cc @@ -1,6 +1,6 @@ +/// this should throw an error. + MyClass& MyClass::foo() { - MyClass& cls = *this; - return cls; } diff --git a/Private/Toolchain/bin/Source/hello_world.s b/Private/Toolchain/bin/Source/hello_world.s new file mode 100644 index 0000000..1833695 --- /dev/null +++ b/Private/Toolchain/bin/Source/hello_world.s @@ -0,0 +1,9 @@ +# Path: Source/hello_world.cc +# Language: MultiProcessor Assembly. (Generated from C++) +# Build Date: 2024-3-21 + +%bits 64 + +export .text _CZZ_MAHR_MANGLEMyClass&@MyClass::foo +mov rax, rcx +ret
\ No newline at end of file diff --git a/Private/Toolchain/bin/Source/preprocessor.64x b/Private/Toolchain/bin/Source/preprocessor.64x index 66e12a6..2f7a404 100644 --- a/Private/Toolchain/bin/Source/preprocessor.64x +++ b/Private/Toolchain/bin/Source/preprocessor.64x @@ -1,4 +1,5 @@ %def ra r19 +%warning stuff export .text foo pha diff --git a/Private/Toolchain/bin/Source/preprocessor.64x.pp b/Private/Toolchain/bin/Source/preprocessor.64x.pp new file mode 100644 index 0000000..face9bf --- /dev/null +++ b/Private/Toolchain/bin/Source/preprocessor.64x.pp @@ -0,0 +1,8 @@ + +export .text foo + pha + lda r2, 0x1000 + mv r19, r2 + jrl + pla + jlr diff --git a/Private/Toolchain/bpp.cc b/Private/Toolchain/bpp.cc index 04fbe91..0c62a72 100644 --- a/Private/Toolchain/bpp.cc +++ b/Private/Toolchain/bpp.cc @@ -16,7 +16,7 @@ #include <filesystem> #include <vector> -#define kMacroPrefix '#' +#define kMacroPrefix '%' // @author Amlal El Mahrouss (amlel) // @file bpp.cc @@ -873,7 +873,7 @@ MPCC_MODULE(HCorePreprocessor) { printf("%s\n", "bpp v1.11, (c) Mahrouss Logic"); printf("%s\n", "-working-dir <path>: set directory to working path."); printf("%s\n", "-include-dir <path>: add directory to include path."); - printf("%s\n", "-define <name> <value>: define macro."); + printf("%s\n", "-def <name> <value>: def macro."); printf("%s\n", "-version: print the version."); return 0; @@ -893,7 +893,7 @@ MPCC_MODULE(HCorePreprocessor) { kWorkingDir = inc; } - if (strcmp(argv[index], "-define") == 0 && + if (strcmp(argv[index], "-def") == 0 && argv[index + 1] != nullptr && argv[index + 2] != nullptr) { std::string macro_key = argv[index + 1]; diff --git a/Private/Toolchain/cc.cc b/Private/Toolchain/cc.cc index e447db8..e75b399 100644 --- a/Private/Toolchain/cc.cc +++ b/Private/Toolchain/cc.cc @@ -83,7 +83,7 @@ struct CompilerState final { std::unique_ptr<std::ofstream> fOutputAssembly; std::string fLastFile; std::string fLastError; - bool kVerbose; + bool fVerbose; }; } // namespace detail @@ -1220,7 +1220,7 @@ static void cc_print_help() { kSplashCxx(); kPrintF("%s\n", "--asm: Select assembler, example:\n--asm=64x0"); - kPrintF("%s\n", "--compiler: Select backend, example:\n--compiler=mahrouss"); + kPrintF("%s\n", "--compiler: Select backend, example:\n--compiler=64x0"); } ///////////////////////////////////////////////////////////////////////////////////////// @@ -1250,7 +1250,7 @@ MPCC_MODULE(HCoreCompilerCLang64x0) { } if (strcmp(argv[index], "-verbose") == 0) { - kState.kVerbose = true; + kState.fVerbose = true; continue; } @@ -1277,7 +1277,7 @@ MPCC_MODULE(HCoreCompilerCLang64x0) { continue; } - if (strcmp(argv[index], "--compiler=mahrouss") == 0) { + if (strcmp(argv[index], "--compiler=64x0") == 0) { if (!kCompilerBackend) kCompilerBackend = new CompilerBackendCLang(); continue; @@ -1310,11 +1310,11 @@ MPCC_MODULE(HCoreCompilerCLang64x0) { std::string srcFile = argv[index]; if (strstr(argv[index], kExt) == nullptr) { - if (kState.kVerbose) { - std::cerr << argv[index] << " is not a valid C source.\n"; + if (kState.fVerbose) { + detail::print_error(srcFile + " is not a valid C++ source.\n", "ccplus"); } - return -1; + return 1; } if (kFactory.Compile(srcFile, kMachine) != kOk) return -1; diff --git a/Private/Toolchain/ccplus.cc b/Private/Toolchain/ccplus.cc index b1333d2..97d8a21 100644 --- a/Private/Toolchain/ccplus.cc +++ b/Private/Toolchain/ccplus.cc @@ -78,7 +78,7 @@ struct CompilerState final { std::unique_ptr<std::ofstream> fOutputAssembly; std::string fLastFile; std::string fLastError; - bool kVerbose; + bool fVerbose; }; } // namespace detail @@ -288,271 +288,12 @@ class AssemblyMountpointClang final : public CompilerKit::AssemblyMountpoint { std::string source; while (std::getline(src_fp, source)) { - // compile into AST. + // Compile into an AST format. kCompilerBackend->Compile(source.c_str(), src.data()); } if (kAcceptableErrors > 0) return -1; - std::vector<std::string> lines; - - // \brief compiler scope type. - struct scope_type { - std::vector<std::string> vals; - std::size_t reg_cnt{kStartUsable}; - std::size_t id{0}; - - bool operator==(const scope_type& typ) const { return typ.id == id; } - }; - - std::vector<scope_type> scope; - scope.emplace_back(); - - bool found_type = false; - bool is_pointer = false; - bool found_expr = false; - bool found_func = false; - bool is_access_field = false; - - std::string type; - - std::string this_ref; - - for (auto& leaf : kState.fSyntaxTree->fLeafList) { - if (leaf.fUserData == "{") { - scope.emplace_back(); - } - - if (leaf.fUserData == "}") { - is_access_field = false; - this_ref = ""; - - scope.pop_back(); - - if (scope.size() == 0) { - kRegisterCounter = kStartUsable; - } - } - - if (leaf.fUserData == "int" || leaf.fUserData == "long" || - leaf.fUserData == "unsigned" || leaf.fUserData == "short" || - leaf.fUserData == "char" || leaf.fUserData == "struct" || - leaf.fUserData == "class") { - type += leaf.fUserData; - found_type = true; - } - - if (leaf.fUserData == "(") { - if (found_type) { - found_expr = true; - found_type = false; - is_pointer = false; - } - } - - if (leaf.fUserData == ";") { - is_access_field = false; - } - - if (leaf.fUserData.find(" this") != std::string::npos) { - leaf.fUserData.replace(leaf.fUserData.find(" this"), strlen(" this"), - "r15"); - is_access_field = true; - } - - if (leaf.fUserData.find(" *this") != std::string::npos) { - leaf.fUserData.replace(leaf.fUserData.find(" *this"), strlen(" *this"), - "r15"); - is_access_field = true; - } - - if (leaf.fUserData.find("->") != std::string::npos) { - leaf.fUserData.replace(leaf.fUserData.find("->"), strlen("->"), ", "); - - is_access_field = true; - } - - if (leaf.fUserData == ")") { - if (found_expr) { - found_expr = false; - is_pointer = false; - } else { - leaf.fUserValue = "export .text _CZZ_MAHR_MANGLE"; - - for (auto& line : lines) { - if (line.find(type) != std::string::npos && - line.find("(") != std::string::npos) { - auto fn_name = line.substr(line.find(type), line.find("(")); - - while (fn_name.find(' ') != std::string::npos) - fn_name.replace(fn_name.find(' '), 1, "@"); - - leaf.fUserValue += fn_name; - - break; - } - } - - leaf.fUserValue += "\n"; - - found_func = true; - } - } - - if (leaf.fUserData == ",") { - if (is_pointer) { - is_pointer = false; - } - - auto& front = scope.front(); - - std::string reg = "rcx"; - - front.vals.push_back(reg); - } - - if (leaf.fUserData == "*" || leaf.fUserData == "&") { - if (found_type && !found_expr) is_pointer = true; - } - - if (leaf.fUserData == "=") { - if (found_type) { - auto& front = scope.front(); - - std::string reg = "rcx"; - front.vals.push_back(reg); - - leaf.fUserValue = !is_pointer ? "mov %s, %s1\n" : "lea %s, %s1\n"; - - for (auto& ln : lines) { - if (ln.find(leaf.fUserData) != std::string::npos && - ln.find(";") != std::string::npos) { - auto val = - ln.substr(ln.find(leaf.fUserData) + leaf.fUserData.size()); - - if (val.find(";") != std::string::npos) - val.erase(val.find(";"), 1); - - while (val.find(" ") != std::string::npos) - val.erase(val.find(" "), 1); - - if (val == this_ref) val = "r15"; - - if (this_ref.empty()) this_ref = val; - - if (isalnum(val[0]) && !isdigit(val[0]) && - ln.find("r6") == std::string::npos) - val.insert(0, "import "); - - leaf.fUserValue.replace(leaf.fUserValue.find("%s1"), - strlen("%s1"), val); - } - } - - leaf.fUserValue.replace(leaf.fUserValue.find("%s"), strlen("%s"), - reg); - - found_type = false; - } else { - leaf.fUserValue = !is_pointer ? "mov %s, %s1\n" : "lea 0(%s), %s1\n"; - - for (auto& ln : lines) { - if (ln.find(leaf.fUserData) != std::string::npos && - ln.find(";") != std::string::npos) { - std::string nm; - for (auto i = ln.find('=') + 1; i < ln.size(); ++i) { - if (ln[i] == ';') break; - - nm.push_back(ln[i]); - } - - if (!nm.empty()) { - if (nm == this_ref) nm = "r15"; - - if (this_ref.empty()) this_ref = nm; - - leaf.fUserValue.replace(leaf.fUserValue.find("%s1"), - strlen("%s1"), nm); - break; - } - } - } - - auto& front = scope.front(); - - std::string reg = "rcx"; - - leaf.fUserValue.replace(leaf.fUserValue.find("%s"), strlen("%s"), - reg); - - front.vals.push_back(reg); - - if (is_pointer) { - is_pointer = false; - } - } - } - - if (leaf.fUserData == "return") { - leaf.fUserValue = "mov rax, %s\nret"; - - if (!lines.empty()) { - for (auto& ln : lines) { - if (ln.find(leaf.fUserData) != std::string::npos && - ln.find(";") != std::string::npos) { - auto val = - ln.substr(ln.find(leaf.fUserData) + leaf.fUserData.size()); - val.erase(val.find(";"), 1); - - std::string val_reg; - std::size_t reg_cnt = kRegisterCounter; - - for (int i = ln.find(leaf.fUserData) + leaf.fUserData.size(); - i < ln.size(); ++i) { - try { - if (ln[i] == ',' || ln[i] == '+' || ln[i] == '/' || - ln[i] == '-' || ln[i] == '*' || ln[i] == '|' || - ln[i] == '&' || ln[i] == '&' || ln[i] == '|' || - ln[i] == ';') { - val.replace(val.find(val_reg), val_reg.size(), "rcx"); - val_reg.clear(); - ++reg_cnt; - - continue; - } - } catch (...) { - } - - if (isalnum(ln[i])) val_reg += ln[i]; - } - - while (val.find(" ") != std::string::npos) - val.erase(val.find(" "), 1); - - leaf.fUserValue.replace(leaf.fUserValue.find("%s"), strlen("%s"), - val); - } - } - } else { - leaf.fUserValue.replace(leaf.fUserValue.find("%s"), strlen("%s"), - "0"); - } - - continue; - } - - lines.emplace_back(leaf.fUserData); - } - - for (auto& leaf : kState.fSyntaxTree->fLeafList) { - (*kState.fOutputAssembly) << leaf.fUserValue; - } - - kState.fSyntaxTree = nullptr; - - kState.fOutputAssembly->flush(); - kState.fOutputAssembly.reset(); - return kOk; } }; @@ -584,8 +325,7 @@ MPCC_MODULE(CompilerCPlusPlus) { kKeywords.emplace_back("struct"); kKeywords.emplace_back("_Packed"); kKeywords.emplace_back("_Align"); - kKeywords.emplace_back("_StorageOrderBig"); - kKeywords.emplace_back("_StorageOrderLittle"); + kKeywords.emplace_back("_AlignAs"); kKeywords.emplace_back("extern"); kKeywords.emplace_back("volatile"); kKeywords.emplace_back("static"); @@ -602,7 +342,7 @@ MPCC_MODULE(CompilerCPlusPlus) { kKeywords.emplace_back("float"); kKeywords.emplace_back("double"); kKeywords.emplace_back("unsigned"); - kKeywords.emplace_back("__attribute__"); + kKeywords.emplace_back("_Attribute"); kKeywords.emplace_back("_Import"); kKeywords.emplace_back("_Export"); kKeywords.emplace_back("namespace"); @@ -649,7 +389,7 @@ MPCC_MODULE(CompilerCPlusPlus) { } if (strcmp(argv[index], "-verbose") == 0) { - kState.kVerbose = true; + kState.fVerbose = true; continue; } @@ -704,7 +444,7 @@ MPCC_MODULE(CompilerCPlusPlus) { } if (!found) { - if (kState.kVerbose) { + if (kState.fVerbose) { detail::print_error(argv_i + " is not a valid C++ source.\n", "ccplus"); } diff --git a/Private/Toolchain/i64asm.cc b/Private/Toolchain/i64asm.cc index 2e62fcf..bfb71bc 100644 --- a/Private/Toolchain/i64asm.cc +++ b/Private/Toolchain/i64asm.cc @@ -1053,32 +1053,38 @@ bool CompilerKit::EncoderAMD64::WriteLine(std::string &line, if (currentRegList.size() > 1) hasRightRegister = true; if (hasRightRegister) { - if (bits == 64 || bits == 32) { - bool hasRBasedRegs = false; - - if (currentRegList[0].fName[0] == 'r' || - currentRegList[1].fName[0] == 'r') { - if (isdigit(currentRegList[0].fName[1]) && - isdigit(currentRegList[1].fName[1])) { - kAppBytes.emplace_back(0x4d); - hasRBasedRegs = true; - } else if (isdigit(currentRegList[0].fName[1]) || - isdigit(currentRegList[1].fName[1])) { - kAppBytes.emplace_back(0x4c); - hasRBasedRegs = true; - } + bool hasRBasedRegs = false; + + /// very tricky to understand. + /// this checks for a r8 through r15 register. + if (currentRegList[0].fName[0] == 'r' || + currentRegList[1].fName[0] == 'r') { + if (isdigit(currentRegList[0].fName[1]) && + isdigit(currentRegList[1].fName[1])) { + kAppBytes.emplace_back(0x4d); + hasRBasedRegs = true; + } else if (isdigit(currentRegList[0].fName[1]) || + isdigit(currentRegList[1].fName[1])) { + kAppBytes.emplace_back(0x4c); + hasRBasedRegs = true; } + } + if (bits == 64 || bits == 32) { if (!hasRBasedRegs && bits >= 32) { kAppBytes.emplace_back(opcodeAMD64.fOpcode); } kAppBytes.emplace_back(0x89); } else if (bits == 16) { + if (hasRBasedRegs) { + detail::print_error( + "Invalid combination of operands and registers.", "i64asm"); + throw std::runtime_error("comb_op_reg"); + } + kAppBytes.emplace_back(0x66); kAppBytes.emplace_back(0x89); - - // TODO: 16 bit move operation. } else { detail::print_error( "Invalid combination of operands and registers.", "i64asm"); |
