mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-24 12:35:31 +00:00
This commit is contained in:
parent
ea1d8f9db1
commit
ea2a4196ce
5 changed files with 30 additions and 32 deletions
|
|
@ -88,6 +88,7 @@ Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Docs", "..\Docs", "{67E7DEF
|
||||||
Release.AspNetCompiler.ForceOverwrite = "true"
|
Release.AspNetCompiler.ForceOverwrite = "true"
|
||||||
Release.AspNetCompiler.FixedNames = "false"
|
Release.AspNetCompiler.FixedNames = "false"
|
||||||
Release.AspNetCompiler.Debug = "False"
|
Release.AspNetCompiler.Debug = "False"
|
||||||
|
VWDPort = "4516"
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Compiler.Debug", "..\source2\IL2CPU\Cosmos.IL2CPU.Debug\Cosmos.Compiler.Debug.csproj", "{9998B4EA-385E-4DA2-8905-2BBEB5B2C6E2}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Compiler.Debug", "..\source2\IL2CPU\Cosmos.IL2CPU.Debug\Cosmos.Compiler.Debug.csproj", "{9998B4EA-385E-4DA2-8905-2BBEB5B2C6E2}"
|
||||||
|
|
@ -1172,9 +1173,9 @@ Global
|
||||||
{C5519AC3-218A-4211-9D40-B23AA80FB35E} = {D95021E1-A2C9-4829-819E-ED433AF13162}
|
{C5519AC3-218A-4211-9D40-B23AA80FB35E} = {D95021E1-A2C9-4829-819E-ED433AF13162}
|
||||||
{AB24E403-54F3-4F67-B5E0-119A7227AAC1} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
|
{AB24E403-54F3-4F67-B5E0-119A7227AAC1} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
|
||||||
{6D2688FE-6FD8-44A8-B96A-6037457F72A7} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
|
{6D2688FE-6FD8-44A8-B96A-6037457F72A7} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
|
||||||
|
{35CABD9D-5C85-419A-B6C9-561EAD97A553} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
|
||||||
{4266FA56-F6FE-4E9B-BAE3-B6910183884C} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
|
{4266FA56-F6FE-4E9B-BAE3-B6910183884C} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
|
||||||
{3370FC04-B669-46A4-A4AA-A89540318F8D} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
|
{3370FC04-B669-46A4-A4AA-A89540318F8D} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
|
||||||
{35CABD9D-5C85-419A-B6C9-561EAD97A553} = {FF5BAFDE-AE9D-438D-935A-86B33EE0A758}
|
|
||||||
{C4941654-3D7A-484B-9F5C-3D331AB8F585} = {1698DD83-72A3-44CD-B088-4320A4014A95}
|
{C4941654-3D7A-484B-9F5C-3D331AB8F585} = {1698DD83-72A3-44CD-B088-4320A4014A95}
|
||||||
{9D82B35C-7133-4ADE-AA5C-0FFB2BFA8BA6} = {A4478219-065D-4928-BB4D-4358CAD39A03}
|
{9D82B35C-7133-4ADE-AA5C-0FFB2BFA8BA6} = {A4478219-065D-4928-BB4D-4358CAD39A03}
|
||||||
{2DF5F17F-4890-4856-ADFD-4DE23282C3B7} = {A4478219-065D-4928-BB4D-4358CAD39A03}
|
{2DF5F17F-4890-4856-ADFD-4DE23282C3B7} = {A4478219-065D-4928-BB4D-4358CAD39A03}
|
||||||
|
|
@ -1190,8 +1191,8 @@ Global
|
||||||
{63F7BFB9-419E-4965-B580-304B9C9FA7D8} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
{63F7BFB9-419E-4965-B580-304B9C9FA7D8} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
||||||
{52BF0A64-EBEF-420A-9F27-6C5226A4B77B} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
{52BF0A64-EBEF-420A-9F27-6C5226A4B77B} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
||||||
{C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
{C801F19C-A9D3-42D5-9A57-9FFDF9B4D05E} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
||||||
{239E33A7-F0C3-4801-85CA-4D8F89A31DC0} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
|
||||||
{576C3D3B-A3EA-44FA-8E39-AFD3E6F3FE23} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
{576C3D3B-A3EA-44FA-8E39-AFD3E6F3FE23} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
||||||
|
{239E33A7-F0C3-4801-85CA-4D8F89A31DC0} = {6A15C540-8278-4B9C-B890-FA57FB6AE6A6}
|
||||||
{6658FCE0-7032-4B7B-BD95-F2765C393442} = {2DF5F17F-4890-4856-ADFD-4DE23282C3B7}
|
{6658FCE0-7032-4B7B-BD95-F2765C393442} = {2DF5F17F-4890-4856-ADFD-4DE23282C3B7}
|
||||||
{6882C74B-3ED2-4D76-9E7B-67B6A28808BC} = {0CF14D0F-6054-4D3D-9062-E3D2EB064A4E}
|
{6882C74B-3ED2-4D76-9E7B-67B6A28808BC} = {0CF14D0F-6054-4D3D-9062-E3D2EB064A4E}
|
||||||
{23476FAD-3712-4A4B-90C0-CCCC9AC8D953} = {0CF14D0F-6054-4D3D-9062-E3D2EB064A4E}
|
{23476FAD-3712-4A4B-90C0-CCCC9AC8D953} = {0CF14D0F-6054-4D3D-9062-E3D2EB064A4E}
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,8 @@ namespace Cosmos.Compiler.DebugStub {
|
||||||
static protected DataMember32 DebugTraceMode;
|
static protected DataMember32 DebugTraceMode;
|
||||||
// enum Status
|
// enum Status
|
||||||
static protected DataMember32 DebugStatus;
|
static protected DataMember32 DebugStatus;
|
||||||
|
// Nesting control for non steppable routines
|
||||||
|
static protected DataMember32 DebugSuspendLevel;
|
||||||
|
|
||||||
public DebugStub(int aComNo) {
|
public DebugStub(int aComNo) {
|
||||||
mComNo = aComNo;
|
mComNo = aComNo;
|
||||||
|
|
@ -114,8 +116,6 @@ namespace Cosmos.Compiler.DebugStub {
|
||||||
|
|
||||||
// Old method, need to convert to fields
|
// Old method, need to convert to fields
|
||||||
mAsm.DataMembers.AddRange(new DataMember[]{
|
mAsm.DataMembers.AddRange(new DataMember[]{
|
||||||
// Nesting control for non steppable routines
|
|
||||||
new DataMember("DebugSuspendLevel", 0),
|
|
||||||
// Nesting control for non steppable routines
|
// Nesting control for non steppable routines
|
||||||
new DataMember("DebugResumeLevel", 0),
|
new DataMember("DebugResumeLevel", 0),
|
||||||
// Ptr to the push all data. It points to the "bottom" after a PushAll op.
|
// Ptr to the push all data. It points to the "bottom" after a PushAll op.
|
||||||
|
|
@ -908,7 +908,7 @@ namespace Cosmos.Compiler.DebugStub {
|
||||||
// IRQ's are disabled between Compare and JumpIf so an IRQ cant
|
// IRQ's are disabled between Compare and JumpIf so an IRQ cant
|
||||||
// happen in between them which could also cause double entry.
|
// happen in between them which could also cause double entry.
|
||||||
DisableInterrupts();
|
DisableInterrupts();
|
||||||
Memory["DebugSuspendLevel", 32].Compare(0);
|
DebugSuspendLevel.Value.Compare(0);
|
||||||
JumpIf(Flags.Equal, "DebugStub_Running");
|
JumpIf(Flags.Equal, "DebugStub_Running");
|
||||||
// DebugStub is already running, so exit.
|
// DebugStub is already running, so exit.
|
||||||
// But we need to see if IRQs are disabled.
|
// But we need to see if IRQs are disabled.
|
||||||
|
|
@ -981,18 +981,15 @@ namespace Cosmos.Compiler.DebugStub {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class DebugPoint : CodeGroup {
|
|
||||||
public class DebugSuspend : CodeBlock {
|
public class DebugSuspend : CodeBlock {
|
||||||
public override void Assemble() {
|
public override void Assemble() {
|
||||||
Memory["DebugSuspendLevel", 32]++;
|
DebugSuspendLevel.Value++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class DebugResume : CodeBlock {
|
public class DebugResume : CodeBlock {
|
||||||
public override void Assemble() {
|
public override void Assemble() {
|
||||||
Memory["DebugSuspendLevel", 32]--;
|
DebugSuspendLevel.Value--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,18 @@ namespace Cosmos.Compiler.XSharp {
|
||||||
return new MemoryAction(ElementReference.New(Name)) { IsIndirect = true, Size = 32 };
|
return new MemoryAction(ElementReference.New(Name)) { IsIndirect = true, Size = 32 };
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
|
// For DataMember32 value will be null with ++ and --, this is important and purposeful.
|
||||||
|
// ++ and -- try to set again, but for us we dont want that.
|
||||||
|
if (value != null) {
|
||||||
new Move {
|
new Move {
|
||||||
DestinationRef = ElementReference.New(Name), DestinationIsIndirect = true
|
DestinationRef = ElementReference.New(Name),
|
||||||
, SourceValue = value.Value.GetValueOrDefault(), SourceRef = value.Reference, SourceReg = value.Register, SourceIsIndirect = value.IsIndirect };
|
DestinationIsIndirect = true,
|
||||||
|
SourceValue = value.Value.GetValueOrDefault(),
|
||||||
|
SourceRef = value.Reference,
|
||||||
|
SourceReg = value.Register,
|
||||||
|
SourceIsIndirect = value.IsIndirect
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,11 +33,13 @@ namespace Cosmos.Compiler.XSharp {
|
||||||
|
|
||||||
public static MemoryAction operator ++(MemoryAction aTarget) {
|
public static MemoryAction operator ++(MemoryAction aTarget) {
|
||||||
aTarget.ApplyToDest(new INC());
|
aTarget.ApplyToDest(new INC());
|
||||||
|
// Must return null, see DataMember.this[] comment
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MemoryAction operator --(MemoryAction aTarget) {
|
public static MemoryAction operator --(MemoryAction aTarget) {
|
||||||
aTarget.ApplyToDest(new Dec());
|
aTarget.ApplyToDest(new Dec());
|
||||||
|
// Must return null, see DataMember.this[] comment
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -258,9 +258,6 @@ namespace Cosmos.IL2CPU.X86 {
|
||||||
if (mComNumber > 0) {
|
if (mComNumber > 0) {
|
||||||
var xStub = new DebugStub(mComNumber);
|
var xStub = new DebugStub(mComNumber);
|
||||||
xStub.Assemble();
|
xStub.Assemble();
|
||||||
|
|
||||||
var xStub2 = new DebugPoint();
|
|
||||||
xStub2.Assemble();
|
|
||||||
} else {
|
} else {
|
||||||
new Label("DebugStub_Step");
|
new Label("DebugStub_Step");
|
||||||
new Return();
|
new Return();
|
||||||
|
|
@ -271,12 +268,9 @@ namespace Cosmos.IL2CPU.X86 {
|
||||||
#if !LFB_1024_8
|
#if !LFB_1024_8
|
||||||
DataMembers.Add(new DataIfNotDefined("ELF_COMPILATION"));
|
DataMembers.Add(new DataIfNotDefined("ELF_COMPILATION"));
|
||||||
uint xFlags = 0x10003;
|
uint xFlags = 0x10003;
|
||||||
DataMembers.Add(new DataMember("MultibootSignature",
|
DataMembers.Add(new DataMember("MultibootSignature", new uint[] { 0x1BADB002 }));
|
||||||
new uint[] { 0x1BADB002 }));
|
DataMembers.Add(new DataMember("MultibootFlags", xFlags));
|
||||||
DataMembers.Add(new DataMember("MultibootFlags",
|
DataMembers.Add(new DataMember("MultibootChecksum", (int)(0 - (xFlags + 0x1BADB002))));
|
||||||
xFlags));
|
|
||||||
DataMembers.Add(new DataMember("MultibootChecksum",
|
|
||||||
(int)(0 - (xFlags + 0x1BADB002))));
|
|
||||||
DataMembers.Add(new DataMember("MultibootHeaderAddr", ElementReference.New("MultibootSignature")));
|
DataMembers.Add(new DataMember("MultibootHeaderAddr", ElementReference.New("MultibootSignature")));
|
||||||
DataMembers.Add(new DataMember("MultibootLoadAddr", ElementReference.New("MultibootSignature")));
|
DataMembers.Add(new DataMember("MultibootLoadAddr", ElementReference.New("MultibootSignature")));
|
||||||
DataMembers.Add(new DataMember("MultibootLoadEndAddr", ElementReference.New("_end_code")));
|
DataMembers.Add(new DataMember("MultibootLoadEndAddr", ElementReference.New("_end_code")));
|
||||||
|
|
@ -285,12 +279,9 @@ namespace Cosmos.IL2CPU.X86 {
|
||||||
DataMembers.Add(new DataEndIfDefined());
|
DataMembers.Add(new DataEndIfDefined());
|
||||||
DataMembers.Add(new DataIfDefined("ELF_COMPILATION"));
|
DataMembers.Add(new DataIfDefined("ELF_COMPILATION"));
|
||||||
xFlags = 0x00003;
|
xFlags = 0x00003;
|
||||||
DataMembers.Add(new DataMember("MultibootSignature",
|
DataMembers.Add(new DataMember("MultibootSignature", new uint[] { 0x1BADB002 }));
|
||||||
new uint[] { 0x1BADB002 }));
|
DataMembers.Add(new DataMember("MultibootFlags", xFlags));
|
||||||
DataMembers.Add(new DataMember("MultibootFlags",
|
DataMembers.Add(new DataMember("MultibootChecksum", (int)(0 - (xFlags + 0x1BADB002))));
|
||||||
xFlags));
|
|
||||||
DataMembers.Add(new DataMember("MultibootChecksum",
|
|
||||||
(int)(0 - (xFlags + 0x1BADB002))));
|
|
||||||
DataMembers.Add(new DataEndIfDefined());
|
DataMembers.Add(new DataEndIfDefined());
|
||||||
#else
|
#else
|
||||||
DataMembers.Add(new DataIfNotDefined("ELF_COMPILATION"));
|
DataMembers.Add(new DataIfNotDefined("ELF_COMPILATION"));
|
||||||
|
|
@ -330,10 +321,8 @@ namespace Cosmos.IL2CPU.X86 {
|
||||||
// memory
|
// memory
|
||||||
DataMembers.Add(new DataMember("MultiBootInfo_Memory_High", 0));
|
DataMembers.Add(new DataMember("MultiBootInfo_Memory_High", 0));
|
||||||
DataMembers.Add(new DataMember("MultiBootInfo_Memory_Low", 0));
|
DataMembers.Add(new DataMember("MultiBootInfo_Memory_Low", 0));
|
||||||
DataMembers.Add(new DataMember("Before_Kernel_Stack",
|
DataMembers.Add(new DataMember("Before_Kernel_Stack", new byte[0x50000]));
|
||||||
new byte[0x50000]));
|
DataMembers.Add(new DataMember("Kernel_Stack", new byte[0]));
|
||||||
DataMembers.Add(new DataMember("Kernel_Stack",
|
|
||||||
new byte[0]));
|
|
||||||
DataMembers.Add(new DataMember("MultiBootInfo_Structure", new uint[1]));
|
DataMembers.Add(new DataMember("MultiBootInfo_Structure", new uint[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue