This commit is contained in:
kudzu_cp 2012-07-13 17:12:18 +00:00
parent ba605bced9
commit fab48a3121
4 changed files with 91 additions and 34 deletions

View file

@ -92,7 +92,7 @@ Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Docs", "..\Docs", "{67E7DEF
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
VWDPort = "1091"
VWDPort = "52631"
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cosmos.Debug.Consts", "..\source2\IL2CPU\Cosmos.IL2CPU.Debug\Cosmos.Debug.Consts.csproj", "{9998B4EA-385E-4DA2-8905-2BBEB5B2C6E2}"

View file

@ -1,11 +1,11 @@
DebugStub_ProcessCommand2:
DebugStub_ProcessCommandNew:
Call DebugStub_ComReadAL
Push EAX
Cmp AL, DebugStub_Const_Vs2Ds_Noop
JE DebugStub_ProcessCommand2_Exit
JE DebugStub_ProcessCommandNew_Exit
Mov EAX, 0
Call DebugStub_ComReadAL
@ -14,19 +14,60 @@ Mov [DebugStub_CommandID], EAX
Mov EAX, [ESP + 0]
Cmp EAX, DebugStub_Const_Vs2Ds_TraceOff
JNE DebugStub_ProcessCommand2_Block1End
JNE DebugStub_ProcessCommandNew_Block1End
Call DebugStub_TraceOff
Jmp DebugStub_ProcessCommand2_Exit
DebugStub_ProcessCommand2_Block1End:
Jmp DebugStub_ProcessCommandNew_Exit
DebugStub_ProcessCommandNew_Block1End:
Cmp EAX, DebugStub_Const_Vs2Ds_TraceOn
JNE DebugStub_ProcessCommandNew_Block2End
Call DebugStub_TraceOn
Jmp DebugStub_ProcessCommandNew_Exit
DebugStub_ProcessCommandNew_Block2End:
Cmp EAX, DebugStub_Const_Vs2Ds_Break
JNE DebugStub_ProcessCommandNew_Block3End
Call DebugStub_Break
Jmp DebugStub_ProcessCommandNew_Exit
DebugStub_ProcessCommandNew_Block3End:
Cmp EAX, DebugStub_Const_Vs2Ds_BreakOnAddress
JNE DebugStub_ProcessCommandNew_Block4End
Call DebugStub_BreakOnAddress
Jmp DebugStub_ProcessCommandNew_Exit
DebugStub_ProcessCommandNew_Block4End:
Cmp EAX, DebugStub_Const_Vs2Ds_SendMethodContext
JNE DebugStub_ProcessCommandNew_Block5End
Call DebugStub_SendMethodContext
Jmp DebugStub_ProcessCommandNew_Exit
DebugStub_ProcessCommandNew_Block5End:
Cmp EAX, DebugStub_Const_Vs2Ds_SendMemory
JNE DebugStub_ProcessCommandNew_Block6End
Call DebugStub_SendMemory
Jmp DebugStub_ProcessCommandNew_Exit
DebugStub_ProcessCommandNew_Block6End:
Cmp EAX, DebugStub_Const_Vs2Ds_SendRegisters
JNE DebugStub_ProcessCommandNew_Block7End
Call DebugStub_SendRegisters
Jmp DebugStub_ProcessCommandNew_Exit
DebugStub_ProcessCommandNew_Block7End:
Cmp EAX, DebugStub_Const_Vs2Ds_SendFrame
JNE DebugStub_ProcessCommandNew_Block8End
Call DebugStub_SendFrame
Jmp DebugStub_ProcessCommandNew_Exit
DebugStub_ProcessCommandNew_Block8End:
Cmp EAX, DebugStub_Const_Vs2Ds_SendStack
JNE DebugStub_ProcessCommandNew_Block9End
Call DebugStub_SendStack
Jmp DebugStub_ProcessCommandNew_Exit
DebugStub_ProcessCommandNew_Block9End:
Cmp EAX, DebugStub_Const_Vs2Ds_Ping
JNE DebugStub_ProcessCommandNew_Block10End
Call DebugStub_Ping
Jmp DebugStub_ProcessCommandNew_Exit
DebugStub_ProcessCommandNew_Block10End:
DebugStub_ProcessCommand2_Exit:
DebugStub_ProcessCommandNew_Exit:
Pop EAX
Ret
DebugStub_CheckCmd2:
DebugStub_CheckCmd2_Exit:
Ret
DebugStub_AckCommand:
Mov AL, DebugStub_Const_Ds2Vs_CmdCompleted

View file

@ -2,7 +2,7 @@
// Modifies: AL, DX (ComReadAL)
// Returns: AL
function ProcessCommand2 {
function ProcessCommandNew {
ComReadAL()
// Some callers expect AL to be returned, so we preserve it
// in case any commands modify AL.
@ -25,16 +25,42 @@ function ProcessCommand2 {
TraceOff()
return
}
//CheckCmd("TraceOff", Vs2Ds.TraceOff)
//CheckCmd("TraceOn", Vs2Ds.TraceOn)
//CheckCmd("Break", Vs2Ds.Break)
//CheckCmd("BreakOnAddress", Vs2Ds.BreakOnAddress)
//CheckCmd("SendMethodContext", Vs2Ds.SendMethodContext)
//CheckCmd("SendMemory", Vs2Ds.SendMemory)
//CheckCmd("SendRegisters", Vs2Ds.SendRegisters)
//CheckCmd("SendFrame", Vs2Ds.SendFrame)
//CheckCmd("SendStack", Vs2Ds.SendStack)
//CheckCmd("Ping", Vs2Ds.Ping)
if EAX = #Vs2Ds_TraceOn {
TraceOn()
return
}
if EAX = #Vs2Ds_Break {
Break()
return
}
if EAX = #Vs2Ds_BreakOnAddress {
BreakOnAddress()
return
}
if EAX = #Vs2Ds_SendMethodContext {
SendMethodContext()
return
}
if EAX = #Vs2Ds_SendMemory {
SendMemory()
return
}
if EAX = #Vs2Ds_SendRegisters {
SendRegisters()
return
}
if EAX = #Vs2Ds_SendFrame {
SendFrame()
return
}
if EAX = #Vs2Ds_SendStack {
SendStack()
return
}
if EAX = #Vs2Ds_Ping {
Ping()
return
}
Exit:
// Restore AL for callers who check the command and do
@ -42,16 +68,6 @@ Exit:
-EAX
}
function CheckCmd2 {
// AL.Compare(aCmd)
// string xAfterLabel = NewLabel()
// JumpIf(Flags.NotEqual, xAfterLabel)
// Call("DebugStub_" + aLabel)
// Call("DebugStub_AckCommand")
// Jump(".End")
// Label = xAfterLabel
}
function AckCommand {
// We acknowledge receipt of the command AND the processing of it.
// -In the past the ACK only acknowledged receipt.

View file

@ -167,7 +167,7 @@ namespace Cosmos.Debug.DebugStub {
// If a command is waiting, process it and then check for another.
// If no command waiting, break from loop.
JumpIf(Flags.Zero, ".CheckForCmd_Break");
Call<ProcessCommand>();
Call("DebugStub_ProcessCommand");
// See if there are more commands waiting
Jump(".CheckForCmd");
@ -191,7 +191,7 @@ namespace Cosmos.Debug.DebugStub {
Label = ".WaitCmd";
{
// Check for common commands first
Call<ProcessCommand>();
Call("DebugStub_ProcessCommand");
// Now check for commands that are only valid in break state or commands that require special handling while in break state.