mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-19 20:39:01 +00:00
141 lines
3.6 KiB
NASM
141 lines
3.6 KiB
NASM
|
|
|
|
|
|
|
|
DebugStub_HackCompareAsmBreakEIP:
|
|
Cmp EAX, DebugStub_AsmBreakEIP
|
|
DebugStub_HackCompareAsmBreakEIP_Exit:
|
|
Ret
|
|
|
|
DebugStub_BreakOnAddress:
|
|
Pushad
|
|
Call DebugStub_ComReadEAX
|
|
Mov ECX, EAX
|
|
|
|
Mov EAX, 0
|
|
Call DebugStub_ComReadAL
|
|
|
|
Mov EBX, DebugBPs
|
|
SHL EAX, 2
|
|
Add EBX, EAX
|
|
|
|
Mov [EBX + 0], ECX
|
|
DebugStub_BreakOnAddress_Exit:
|
|
Popad
|
|
Ret
|
|
|
|
DebugStub_Executing2:
|
|
|
|
Mov EAX, [DebugStub_CallerEIP]
|
|
Cmp EAX, [DebugStub_AsmBreakEIP]
|
|
JNE DebugStub_Executing2_Block1_End
|
|
Call DebugStub_ClearAsmBreak
|
|
Call DebugStub_Break
|
|
Jmp DebugStub_Executing2_Normal
|
|
DebugStub_Executing2_Block1_End:
|
|
|
|
|
|
Mov EAX, [DebugStub_CallerEIP]
|
|
Mov EDI, DebugBPs
|
|
Mov ECX, 256
|
|
repne scasd
|
|
JZ DebugStub_Executing2_Block2_End
|
|
Call DebugStub_Break
|
|
Jmp DebugStub_Executing2_Normal
|
|
DebugStub_Executing2_Block2_End:
|
|
|
|
Cmp dword[DebugStub_DebugBreakOnNextTrace], DebugStub_Const_StepTrigger_Into
|
|
JNE DebugStub_Executing2_Block3_End
|
|
Call DebugStub_Break
|
|
Jmp DebugStub_Executing2_Normal
|
|
DebugStub_Executing2_Block3_End:
|
|
|
|
Cmp dword[DebugStub_DebugBreakOnNextTrace], DebugStub_Const_StepTrigger_Over
|
|
JNE DebugStub_Executing2_Block4_End
|
|
Mov EAX, [DebugStub_CallerEBP]
|
|
Cmp EAX, [DebugStub_BreakEBP]
|
|
JA DebugStub_Executing2_Block5_End
|
|
Call DebugStub_Break
|
|
DebugStub_Executing2_Block5_End:
|
|
Jmp DebugStub_Executing2_Normal
|
|
DebugStub_Executing2_Block4_End:
|
|
|
|
Cmp dword[DebugStub_DebugBreakOnNextTrace], DebugStub_Const_StepTrigger_Out
|
|
JNE DebugStub_Executing2_Block6_End
|
|
Mov EAX, [DebugStub_CallerEBP]
|
|
Cmp EAX, [DebugStub_BreakEBP]
|
|
JE DebugStub_Executing2_Normal
|
|
JZ DebugStub_Executing2_Block7_End
|
|
Call DebugStub_Break
|
|
DebugStub_Executing2_Block7_End:
|
|
Jmp DebugStub_Executing2_Normal
|
|
DebugStub_Executing2_Block6_End:
|
|
|
|
DebugStub_Executing2_Normal:
|
|
Cmp dword[DebugStub_TraceMode], DebugStub_Const_Tracing_On
|
|
JNE DebugStub_Executing2_Block8_End
|
|
Call DebugStub_SendTrace
|
|
DebugStub_Executing2_Block8_End:
|
|
|
|
DebugStub_Executing2_CheckForCmd:
|
|
Mov DX, [DebugStub_ComAddr]
|
|
Add DX, 5
|
|
In AL, DX
|
|
Test AL, 1
|
|
JZ DebugStub_Executing2_Block9_End
|
|
Call DebugStub_ProcessCommand
|
|
Jmp DebugStub_Executing2_CheckForCmd
|
|
DebugStub_Executing2_Block9_End:
|
|
DebugStub_Executing2_Exit:
|
|
Ret
|
|
|
|
DebugStub_Break2:
|
|
Mov dword[DebugStub_DebugBreakOnNextTrace], DebugStub_Const_StepTrigger_None
|
|
Mov dword[DebugStub_BreakEBP], 0
|
|
Mov dword[DebugStub_DebugStatus], DebugStub_Const_Status_Break
|
|
Call DebugStub_SendTrace
|
|
|
|
DebugStub_Break2_WaitCmd:
|
|
Call DebugStub_ProcessCommand
|
|
|
|
|
|
Cmp AL, DebugStub_Const_Vs2Ds_Continue
|
|
JE DebugStub_Break2_Done
|
|
|
|
Cmp AL, DebugStub_Const_Vs2Ds_SetAsmBreak
|
|
JNE DebugStub_Break2_Block1_End
|
|
Call DebugStub_SetAsmBreak
|
|
Jmp DebugStub_Break2_WaitCmd
|
|
DebugStub_Break2_Block1_End:
|
|
|
|
Cmp AL, DebugStub_Const_Vs2Ds_StepInto
|
|
JNE DebugStub_Break2_Block2_End
|
|
Mov dword[DebugStub_DebugBreakOnNextTrace], DebugStub_Const_StepTrigger_Into
|
|
Jmp DebugStub_Break2_Done
|
|
DebugStub_Break2_Block2_End:
|
|
|
|
Cmp AL, DebugStub_Const_Vs2Ds_StepOver
|
|
JNE DebugStub_Break2_Block3_End
|
|
Mov dword[DebugStub_DebugBreakOnNextTrace], DebugStub_Const_StepTrigger_Over
|
|
Mov EAX, [DebugStub_CallerEBP]
|
|
Mov [DebugStub_BreakEBP], EAX
|
|
Jmp DebugStub_Break2_Done
|
|
DebugStub_Break2_Block3_End:
|
|
|
|
Cmp AL, DebugStub_Const_Vs2Ds_StepOut
|
|
JNE DebugStub_Break2_Block4_End
|
|
Mov dword[DebugStub_DebugBreakOnNextTrace], DebugStub_Const_StepTrigger_Out
|
|
Mov EAX, [DebugStub_CallerEBP]
|
|
Mov [DebugStub_BreakEBP], EAX
|
|
Jmp DebugStub_Break2_Done
|
|
DebugStub_Break2_Block4_End:
|
|
|
|
Jmp DebugStub_Break2_WaitCmd
|
|
|
|
DebugStub_Break2_Done:
|
|
Call DebugStub_AckCommand
|
|
Mov dword[DebugStub_DebugStatus], DebugStub_Const_Status_Run
|
|
DebugStub_Break2_Exit:
|
|
Ret
|
|
|
|
|