upload koldbg by CandyMan
git-svn-id: svn://kolibrios.org@9353 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
2
programs/develop/koldbg/Tupfile.lua
Normal file
2
programs/develop/koldbg/Tupfile.lua
Normal file
@@ -0,0 +1,2 @@
|
||||
if tup.getconfig("NO_FASM") ~= "" then return end
|
||||
tup.rule({"koldbg.asm"}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "koldbg")
|
50
programs/develop/koldbg/assemble.inc
Normal file
50
programs/develop/koldbg/assemble.inc
Normal file
@@ -0,0 +1,50 @@
|
||||
;-----------------------------------------------------------------------------
|
||||
; Assemble instruction event
|
||||
OnAsm: mov esi,[CurArg]
|
||||
mov edi,esi
|
||||
mov ecx,255
|
||||
xor eax,eax
|
||||
repnz scasb
|
||||
stc
|
||||
sbb edi,esi
|
||||
jz .Exit
|
||||
;
|
||||
mov eax,[CPUYPos]
|
||||
mov rax,[AddrBuffer+(rax-1)*sizeof.dq]
|
||||
mov [OriginPtr],rax
|
||||
mov al,[CodeType]
|
||||
mov [code_type],al
|
||||
;
|
||||
call Assemble
|
||||
or esi,esi
|
||||
jz .Move
|
||||
;
|
||||
if 1
|
||||
mov ecx,MSG_WIDTH-1
|
||||
mov edi,ErrorLine
|
||||
push rdi
|
||||
.Loop: lodsb
|
||||
stosb
|
||||
or al,al
|
||||
loopnz .Loop
|
||||
mov [rdi-1],word 10
|
||||
pop rsi
|
||||
and byte [rsi],0xDF
|
||||
end if
|
||||
;
|
||||
call PutMessageNoDraw
|
||||
jmp .Exit
|
||||
.Move: mov eax,[CPUYPos]
|
||||
mov rsi,[AddrBuffer+(rax-1)*sizeof.dq]
|
||||
lea edi,[output_data]
|
||||
mcall 69,7,[DebuggeePID],[output_size]
|
||||
.Exit: call PrintCmdLine
|
||||
mov [AfterKey],1
|
||||
call ShowImage
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
uglobal
|
||||
if used ErrorLine
|
||||
ErrorLine rb MSG_WIDTH
|
||||
end if
|
||||
endg
|
564
programs/develop/koldbg/cmdhist.inc
Normal file
564
programs/develop/koldbg/cmdhist.inc
Normal file
@@ -0,0 +1,564 @@
|
||||
InitCmdHistBuffer:
|
||||
;-------------------------------------------------------------------------------
|
||||
push eax ebx ecx
|
||||
|
||||
mcall 68,12,4096 ;allocate 4KB block
|
||||
mov [CmdHistBuffer.Ptr],eax
|
||||
mov [CmdHistBuffer.Size],ecx
|
||||
|
||||
mov edi,eax
|
||||
xor eax,eax
|
||||
stosd
|
||||
stosd
|
||||
mov [CmdHistBuffer.NewNodeOffset],eax
|
||||
mov [CmdHistBuffer.LastNodeOffset],eax
|
||||
mov [CmdHistBuffer.CurNodeOffset],eax
|
||||
mov [CmdHistBuffer.TmpLineFlag],al
|
||||
mov [CmdHistBuffer.NFlag],al
|
||||
|
||||
pop ecx ebx eax
|
||||
ret
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
EnlargeCmdHistBuffer:
|
||||
;-------------------------------------------------------------------------------
|
||||
pusha
|
||||
|
||||
mov ecx,[CmdHistBuffer.Size]
|
||||
add ecx,4096
|
||||
mov edx,[CmdHistBuffer.Ptr]
|
||||
mcall 68,20 ;reallocate the buffer (prev. size + 4KB)
|
||||
test eax,eax
|
||||
jz .Err
|
||||
mov [CmdHistBuffer.Ptr],eax
|
||||
mov [CmdHistBuffer.Size],ecx
|
||||
.OK:
|
||||
clc
|
||||
popa
|
||||
ret
|
||||
.Err:
|
||||
stc
|
||||
popa
|
||||
ret
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
AddCmdHistLine:
|
||||
;-------------------------------------------------------------------------------
|
||||
;in:
|
||||
;eax = ptr to ASCIIZ string of line
|
||||
;-------------------------------------------------------------------------------
|
||||
pusha
|
||||
|
||||
mov esi,eax
|
||||
mov edx,eax
|
||||
xor ecx,ecx
|
||||
@@:
|
||||
inc ecx
|
||||
lodsb
|
||||
test al,al
|
||||
jz @F
|
||||
jmp @B
|
||||
@@:
|
||||
dec ecx
|
||||
jz .OK
|
||||
|
||||
inc ecx
|
||||
|
||||
mov eax,[CmdHistBuffer.NewNodeOffset]
|
||||
lea eax,[eax+ecx+2*4]
|
||||
cmp [CmdHistBuffer.Size],eax
|
||||
jae @F
|
||||
call EnlargeCmdHistBuffer
|
||||
jc .Err
|
||||
@@:
|
||||
mov edi,[CmdHistBuffer.NewNodeOffset]
|
||||
mov eax,[CmdHistBuffer.Ptr]
|
||||
add edi,eax
|
||||
cmp eax,edi ;if eax = edi, then it's the first node
|
||||
jne @F
|
||||
xor eax,eax
|
||||
dec eax
|
||||
stosd ;save previous node link = -1 for the first node
|
||||
stosd ;save next node link = -1 for the first node
|
||||
jmp .CPStr
|
||||
@@:
|
||||
mov ebx,[CmdHistBuffer.LastNodeOffset]
|
||||
mov [edi],ebx ;save previous node link for a new node
|
||||
add ebx,eax
|
||||
mov eax,[CmdHistBuffer.NewNodeOffset]
|
||||
mov [ebx+4],eax ;update next node link for a last node
|
||||
mov [CmdHistBuffer.LastNodeOffset],eax
|
||||
mov [CmdHistBuffer.CurNodeOffset],eax
|
||||
add edi,4
|
||||
xor eax,eax
|
||||
dec eax
|
||||
stosd
|
||||
.CPStr:
|
||||
mov esi,edx
|
||||
|
||||
push ecx
|
||||
rep movsb
|
||||
pop ecx
|
||||
|
||||
add ecx,2*4
|
||||
add [CmdHistBuffer.NewNodeOffset],ecx
|
||||
.OK:
|
||||
clc
|
||||
.Err:
|
||||
mov [CmdHistBuffer.TmpLineFlag],0
|
||||
popa
|
||||
ret
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
AddCmdHistTmpLine:
|
||||
;-------------------------------------------------------------------------------
|
||||
;in:
|
||||
;eax = ptr to ASCIIZ string of line
|
||||
;-------------------------------------------------------------------------------
|
||||
pusha
|
||||
|
||||
mov esi,eax
|
||||
mov edx,eax
|
||||
xor ecx,ecx
|
||||
@@:
|
||||
inc ecx
|
||||
lodsb
|
||||
test al,al
|
||||
jz @F
|
||||
jmp @b
|
||||
@@:
|
||||
mov eax,[CmdHistBuffer.NewNodeOffset]
|
||||
lea eax,[eax+ecx+2*4]
|
||||
cmp [CmdHistBuffer.Size],eax
|
||||
jae @F
|
||||
call EnlargeCmdHistBuffer
|
||||
jc .Err
|
||||
@@:
|
||||
mov edi,[CmdHistBuffer.NewNodeOffset]
|
||||
mov [CmdHistBuffer.TmpLineFlag],1
|
||||
mov eax,[CmdHistBuffer.Ptr]
|
||||
add edi,eax
|
||||
xor eax,eax
|
||||
stosd
|
||||
stosd ;two zeroes - marker (prefix) of tmp line
|
||||
.CPStr:
|
||||
mov esi,edx
|
||||
rep movsb
|
||||
.OK:
|
||||
clc
|
||||
.Err:
|
||||
popa
|
||||
ret
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
GetCmdHistLine:
|
||||
;-------------------------------------------------------------------------------
|
||||
;out:
|
||||
;eax = ptr to ASCIIZ string of current line
|
||||
;-------------------------------------------------------------------------------
|
||||
push ebx
|
||||
|
||||
mov eax,[CmdHistBuffer.Ptr]
|
||||
mov ebx,[CmdHistBuffer.CurNodeOffset]
|
||||
|
||||
lea eax,[eax+ebx+2*4]
|
||||
|
||||
pop ebx
|
||||
ret
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
GetCmdHistTmpLine:
|
||||
;-------------------------------------------------------------------------------
|
||||
;out:
|
||||
;eax = ptr to ASCIIZ string of current line or 0 (no tmp line)
|
||||
;-------------------------------------------------------------------------------
|
||||
cmp [CmdHistBuffer.TmpLineFlag],0
|
||||
je @F
|
||||
|
||||
mov eax,[CmdHistBuffer.NewNodeOffset]
|
||||
add eax,[CmdHistBuffer.Ptr]
|
||||
add eax,2*4
|
||||
@@:
|
||||
ret
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
PrevCmdHistLine:
|
||||
;-------------------------------------------------------------------------------
|
||||
;out:
|
||||
;CF = 0 - OK, CF = 1 (no previous lines)
|
||||
;-------------------------------------------------------------------------------
|
||||
push eax ebx
|
||||
|
||||
mov eax,[CmdHistBuffer.Ptr]
|
||||
mov ebx,[CmdHistBuffer.CurNodeOffset]
|
||||
|
||||
lea eax,[eax+ebx]
|
||||
mov eax,[eax]
|
||||
inc eax
|
||||
jz .RetCF
|
||||
dec eax
|
||||
mov [CmdHistBuffer.CurNodeOffset],eax
|
||||
|
||||
clc
|
||||
pop ebx eax
|
||||
ret
|
||||
.RetCF:
|
||||
stc
|
||||
pop ebx eax
|
||||
ret
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
NextCmdHistLine:
|
||||
;-------------------------------------------------------------------------------
|
||||
;out:
|
||||
;CF = 0 - OK, CF = 1 (no next lines)
|
||||
;-------------------------------------------------------------------------------
|
||||
push eax ebx
|
||||
|
||||
mov eax,[CmdHistBuffer.Ptr]
|
||||
mov ebx,[CmdHistBuffer.CurNodeOffset]
|
||||
|
||||
lea eax,[eax+ebx]
|
||||
mov eax,[eax+4]
|
||||
inc eax
|
||||
jz .RetCF
|
||||
dec eax
|
||||
mov [CmdHistBuffer.CurNodeOffset],eax
|
||||
|
||||
clc
|
||||
pop ebx eax
|
||||
ret
|
||||
.RetCF:
|
||||
stc
|
||||
pop ebx eax
|
||||
ClearCmdLineEnd:
|
||||
ret
|
||||
;-------------------------------------------------------------------------------
|
||||
|
||||
DrawCmdLine:
|
||||
pushad
|
||||
xor ebx,ebx
|
||||
jmp @F
|
||||
|
||||
DrawCmdLineEnd:
|
||||
pushad
|
||||
mov ebx,[CmdLinePos]
|
||||
@@:
|
||||
call ClearCmdLine
|
||||
|
||||
mov [XPos],1
|
||||
mov [YPos],MinHeight-1
|
||||
mov [Color],15
|
||||
mov al,'>'
|
||||
call PrintC
|
||||
mov ecx,[CmdLineLen]
|
||||
sub ecx,ebx
|
||||
jbe .Skip
|
||||
lea esi,[CmdLine+ebx]
|
||||
.Loop:
|
||||
lodsb
|
||||
call PrintC
|
||||
loop .Loop
|
||||
.Skip:
|
||||
popad
|
||||
ret
|
||||
|
||||
DrawCursor:
|
||||
pushad
|
||||
mov eax,[CmdLinePos]
|
||||
times 2 inc eax
|
||||
mov [CursorX],eax
|
||||
mov [CursorY],MinHeight-1
|
||||
mov [AfterKey],1
|
||||
call ShowImage
|
||||
popad
|
||||
ret
|
||||
|
||||
HideCursor:
|
||||
pushad
|
||||
or [CursorX],-1
|
||||
or [CursorY],-1
|
||||
mov [AfterKey],1
|
||||
call ShowImage
|
||||
popad
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Find command in list
|
||||
FindCmd:
|
||||
; all commands are case-insensitive
|
||||
push edi
|
||||
.X4:
|
||||
mov al,[edi]
|
||||
cmp al,0
|
||||
jz .X5
|
||||
cmp al,'A'
|
||||
jb @F
|
||||
cmp al,'Z'
|
||||
ja @F
|
||||
or al,20h
|
||||
@@:
|
||||
stosb
|
||||
jmp .X4
|
||||
|
||||
; find command
|
||||
.X5:
|
||||
pop edi
|
||||
.X6:
|
||||
cmp dword [esi],0
|
||||
jz .X7
|
||||
push esi
|
||||
mov esi,[esi]
|
||||
lodsb
|
||||
movzx ecx,al
|
||||
push edi
|
||||
repz cmpsb
|
||||
pop edi
|
||||
pop esi
|
||||
jz .X8
|
||||
add esi,17
|
||||
jmp .X6
|
||||
.X7:
|
||||
stc
|
||||
.X8:
|
||||
ret
|
||||
|
||||
HelpGroups:
|
||||
dd aControl,0,0,HelpControlMsg
|
||||
db 0
|
||||
dd aData,0,0,HelpDataMsg
|
||||
db 0
|
||||
dd aBreakpoints,0,0,HelpBreaksMsg
|
||||
db 0
|
||||
; flags field:
|
||||
; &1: command may be called without parameters
|
||||
; &2: command may be called with parameters
|
||||
; &4: command may be called without loaded program
|
||||
; &8: command may be called with loaded program
|
||||
Commands:
|
||||
dd aHlp,OnHelp,HelpSyntax,HelpHelp
|
||||
db 0Fh
|
||||
dd aHelp,OnHelp,HelpSyntax,HelpHelp
|
||||
db 0Fh
|
||||
dd aQuit,OnQuit,QuitSyntax,QuitHelp
|
||||
db 0Dh
|
||||
dd aExit,OnQuit,ExitSyntax,ExitHelp
|
||||
db 0Dh
|
||||
dd aLoad,OnLoad,LoadSyntax,LoadHelp
|
||||
db 6
|
||||
dd aReload,OnReLoad,ReloadSyntax,ReloadHelp
|
||||
db 0Dh
|
||||
dd aTerminate,OnTerminate,TerminateSyntax,TerminateHelp
|
||||
db 9
|
||||
dd aDetach,OnDetach,DetachSyntax,DetachHelp
|
||||
db 9
|
||||
dd aSuspend,OnSuspend,SuspendSyntax,SuspendHelp
|
||||
db 9
|
||||
dd aResume,OnResume,ResumeSyntax,ResumeHelp
|
||||
db 0Bh
|
||||
dd aStep,OnStepMultiple,StepSyntax,StepHelp
|
||||
db 0Bh
|
||||
dd aProceed,OnProceedMultiple,ProceedSyntax,ProceedHelp
|
||||
db 0Bh
|
||||
dd aCalc,OnCalc,CalcSyntax,CalcHelp
|
||||
db 0Eh
|
||||
dd aDump,OnDump,DumpSyntax,DumpHelp
|
||||
db 0Bh
|
||||
;dd aUnassemble,OnUnassemble,UnassembleSyntax,UnassembleHelp
|
||||
;db 0Bh
|
||||
dd aBp,OnBp,BpSyntax,BpHelp
|
||||
db 0Ah
|
||||
dd aBpm,OnBpmb,BpmSyntax,BpmHelp
|
||||
db 0Ah
|
||||
dd aBpmb,OnBpmb,BpmSyntax,BpmHelp
|
||||
db 0Ah
|
||||
dd aBpmw,OnBpmw,BpmSyntax,BpmHelp
|
||||
db 0Ah
|
||||
dd aBpmd,OnBpmd,BpmSyntax,BpmHelp
|
||||
db 0Ah
|
||||
dd aBl,OnBl,BlSyntax,BlHelp
|
||||
db 0Bh
|
||||
dd aBc,OnBc,BcSyntax,BcHelp
|
||||
db 0Ah
|
||||
dd aBd,OnBd,BdSyntax,BdHelp
|
||||
db 0Ah
|
||||
dd aBe,OnBe,BeSyntax,BeHelp
|
||||
db 0Ah
|
||||
dd aReg,OnReg,RSyntax,RHelp
|
||||
db 0Ah
|
||||
dd aUnpack,OnUnpack,UnpackSyntax,UnpackHelp
|
||||
db 9
|
||||
dd aLoadSymbols,OnLoadSymbols,LoadSymbolsSyntax,LoadSymbolsHelp
|
||||
db 0Ah
|
||||
;
|
||||
dd aAsm,OnAsm,AsmSyntax,AsmHelp
|
||||
db 2+8
|
||||
dd aJump,OnJump,JumpSyntax,JumpHelp
|
||||
db 2+8
|
||||
dd aDoLoad,DoLoad,DoLoadSyntax,DoLoadHelp
|
||||
db 1+4
|
||||
;
|
||||
dd 0
|
||||
|
||||
aHelp db 5,'help',0
|
||||
aHlp db 2,'h',0
|
||||
HelpHelp db 'Help on specified function',10
|
||||
HelpSyntax db 'Usage: h or help [group | command]',10,0
|
||||
|
||||
HelpMsg db 'List of known command groups:',10
|
||||
db '"help control" - display list of control commands',10
|
||||
db '"help data" - display list of commands concerning data',10
|
||||
db '"help breakpoints" - display list of commands concerning breakpoints',10,0
|
||||
|
||||
aAsm db 2,'a',0
|
||||
AsmHelp db 'Assemble instruction at current position',10
|
||||
AsmSyntax db 'Usage: a instruction (',8,8Ah,'mov al,[ebx+12h]',8,8Fh,')',10,0
|
||||
|
||||
aJump db 2,'j',0
|
||||
JumpHelp db 'Sets current window or current register new address',10
|
||||
JumpSyntax db 'Usage: Jump <expression>',10,0
|
||||
|
||||
aDetach db 7,'detach',0
|
||||
DetachHelp db 'Detach from debugged program',10
|
||||
DetachSyntax db 'Usage: detach',10,0
|
||||
|
||||
aSuspend db 5,'stop',0
|
||||
SuspendHelp db 'Suspend execution of debugged program',10
|
||||
SuspendSyntax db 'Usage: stop',10,0
|
||||
|
||||
aQuit db 5,'quit',0
|
||||
QuitHelp db 'Quit from debugger',10
|
||||
QuitSyntax db 'Usage: quit',10,0
|
||||
|
||||
aExit db 5,'exit',0
|
||||
ExitHelp db 'Exit from debugger',10
|
||||
ExitSyntax db 'Usage: exit',10,0
|
||||
|
||||
aLoad db 5,'load',0
|
||||
LoadHelp db 'Load program for debugging',10
|
||||
LoadSyntax db 'Usage: load <program-name> [parameters]',10,0
|
||||
|
||||
aDoLoad db 7,'doload',0
|
||||
DoLoadHelp db 'Load test program for debugging',10
|
||||
DoLoadSyntax db 'Usage: doload',10,0
|
||||
|
||||
aReload db 7,'reload',0
|
||||
ReloadHelp db 'Reload debugging program (restart debug session)',10
|
||||
ReloadSyntax db 'Usage: reload',10,0
|
||||
|
||||
aTerminate db 10,'terminate',0
|
||||
TerminateHelp db 'Terminate debugged program',10
|
||||
TerminateSyntax db 'Usage: terminate',10,0
|
||||
|
||||
aResume db 2,'g',0
|
||||
ResumeHelp db 'Go (resume execution of debugged program)',10
|
||||
ResumeSyntax db 'Usage: g',10
|
||||
db ' or: g <expression> - wait until specified address is reached',10,0
|
||||
|
||||
aStep db 2,'s',0
|
||||
StepHelp db 'Make step in debugged program',10
|
||||
StepSyntax db 'Usage: s [<number>]',10,0
|
||||
|
||||
aProceed db 2,'p',0
|
||||
ProceedHelp db 'Make wide step in debugged program (step over CALL, REPxx, LOOP)',10
|
||||
ProceedSyntax db 'Usage: p [<number>]',10,0
|
||||
|
||||
aDump db 2,'d',0
|
||||
DumpHelp db 'Dump data of debugged program',10
|
||||
DumpSyntax db 'Usage: d <expression> - dump data at specified address',10
|
||||
db ' or: d - continue current dump',10,0
|
||||
|
||||
aCalc db 2,'?',0
|
||||
CalcHelp db 'Calculate value of expression',10
|
||||
CalcSyntax db 'Usage: ? <expression>',10,0
|
||||
|
||||
aReg db 2,'r',0
|
||||
RHelp db 'Set register value',10
|
||||
RSyntax db 'Usage: r <register> <expression>',10
|
||||
db ' or: r <register>=<expression> - set value of <register> to <expression>',10,0
|
||||
|
||||
aBp db 3,'bp',0
|
||||
BpHelp db 'set BreakPoint on execution',10
|
||||
BpSyntax db 'Usage: bp <expression>',10,0
|
||||
|
||||
aBpm db 4,'bpm',0
|
||||
aBpmb db 5,'bpmb',0
|
||||
aBpmw db 5,'bpmw',0
|
||||
aBpmd db 5,'bpmd',0
|
||||
BpmHelp db 'set BreakPoint on Memory access',10
|
||||
db 'Maximum 4 breakpoints of this type are allowed',10
|
||||
db 'Note that for this breaks debugger is activated after access',10
|
||||
BpmSyntax db 'Usage: bpmb [w] <expression>',10
|
||||
db ' bpmw [w] <expression>',10
|
||||
db ' bpmd [w] <expression>',10
|
||||
db ' bpm is synonym for bpmd',10
|
||||
db '"w" means break only on writes (default is on read/write)',10,0
|
||||
|
||||
aBl db 3,'bl',0
|
||||
BlHelp db 'Breakpoint List',10
|
||||
BlSyntax db 'Usage: bl - list all breakpoints',10
|
||||
db ' bl <number> - display info on particular breakpoint',10,0
|
||||
|
||||
aBc db 3,'bc',0
|
||||
BcHelp db 'Breakpoint Clear',10
|
||||
BcSyntax db 'Usage: bc <number-list>',10
|
||||
db 'Examples: bc 2',10
|
||||
db ' bc 1 3 4 A',10,0
|
||||
|
||||
aBd db 3,'bd',0
|
||||
BdHelp db 'Breakpoint Disable',10
|
||||
BdSyntax db 'Usage: bd <number-list>',10
|
||||
db 'Examples: bd 2',10
|
||||
db ' bd 1 3 4 A',10,0
|
||||
|
||||
aBe db 3,'be',0
|
||||
BeHelp db 'Breakpoint Enable',10
|
||||
BeSyntax db 'Usage: be <number-list>',10
|
||||
db 'Examples: be 2',10
|
||||
db ' be 1 3 4 A',10,0
|
||||
|
||||
aUnpack db 7,'unpack',0
|
||||
UnpackHelp db 'Try to bypass unpacker code',10
|
||||
UnpackSyntax db 'Usage: unpack',10,0
|
||||
|
||||
aLoadSymbols db 13,'load-symbols',0
|
||||
LoadSymbolsHelp db 'Load symbolic information for executable',10
|
||||
LoadSymbolsSyntax db 'Usage: load-symbols <symbols-file-name>',10,0
|
||||
|
||||
; Control commands group
|
||||
aControl db 8,'control',0
|
||||
HelpControlMsg db 'List of control commands:',10
|
||||
db 'h = help - help',10
|
||||
db 'exit/quit - exit from debugger',10
|
||||
db 'load <name> [params] - load program for debugging',10
|
||||
db 'reload - reload debugging program',10
|
||||
db 'load-symbols <name> - load information on symbols for program',10
|
||||
db 'terminate - terminate loaded program',10
|
||||
db 'detach - detach from debugging program',10
|
||||
db 'stop - suspend execution of debugging program',10
|
||||
db 'a <instruction> - assemble instruction at current position',10
|
||||
db 'g [<expression>] - go on (resume execution of debugging program)',10
|
||||
db 's [<num>] - program step, also <F7>',10
|
||||
db 'p [<num>] - program wide step, also <F8>',10
|
||||
db 'unpack - try to bypass unpacker code (heuristic)',10,0
|
||||
|
||||
; Data commands group
|
||||
aData db 5,'data',0
|
||||
HelpDataMsg db 'List of data commands:',10
|
||||
db '? <expression> - calculate value of expression',10
|
||||
db 'd [<expression>] - dump data at given address',10
|
||||
db 'j <expression> - jump, current window or current register new address',10
|
||||
;db 'u [<expression>] - unassemble instructions at given address',10
|
||||
db 'r <register> <expression> or',10
|
||||
db 'r <register>=<expression> - set register value',10,0
|
||||
|
||||
; Breakpoints commands group
|
||||
aBreakpoints db 12,'breakpoints',0
|
||||
HelpBreaksMsg db 'List of breakpoints commands:',10
|
||||
db 'bp <expression> - set breakpoint on execution',10
|
||||
db 'bpm[b|w|d] <type> <expression> - set breakpoint on memory access',10
|
||||
db 'bl [<number>] - breakpoint(s) info',10
|
||||
db 'bc <number>... - clear breakpoint',10
|
||||
db 'bd <number>... - disable breakpoint',10
|
||||
db 'be <number>... - enable breakpoint',10,0
|
||||
;
|
1
programs/develop/koldbg/compress.bat
Normal file
1
programs/develop/koldbg/compress.bat
Normal file
@@ -0,0 +1 @@
|
||||
uharc a -m3 -mx -md32768 -r koldbg !old\*.* !*.dbg
|
8191
programs/develop/koldbg/disasm/disasm.asm
Normal file
8191
programs/develop/koldbg/disasm/disasm.asm
Normal file
File diff suppressed because it is too large
Load Diff
187
programs/develop/koldbg/disasm/disasm32.asm
Normal file
187
programs/develop/koldbg/disasm/disasm32.asm
Normal file
@@ -0,0 +1,187 @@
|
||||
|
||||
BufferSizeI = 1*1024
|
||||
BufferSizeO = 1*1024
|
||||
|
||||
use32
|
||||
|
||||
rax equ eax
|
||||
rbx equ ebx
|
||||
rcx equ ecx
|
||||
rdx equ edx
|
||||
rsi equ esi
|
||||
rdi equ edi
|
||||
rbp equ ebp
|
||||
rsp equ esp
|
||||
|
||||
dq equ dd
|
||||
|
||||
macro dv A,B
|
||||
{
|
||||
db A
|
||||
dw B
|
||||
}
|
||||
|
||||
macro dy A,B,C
|
||||
{
|
||||
db A,B
|
||||
dw C
|
||||
}
|
||||
|
||||
macro cmova Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jna ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovae Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jnae ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovb Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jnb ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovbe Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jnbe ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovg Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jng ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovge Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jnge ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovl Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jnl ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovle Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jnle ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovno Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jo ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovnp Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jp ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovns Dst,Src
|
||||
{
|
||||
local ..L
|
||||
js ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovnz Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jz ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovo Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jno ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovp Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jnp ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovs Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jns ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro cmovz Dst,Src
|
||||
{
|
||||
local ..L
|
||||
jnz ..L
|
||||
mov Dst,Src
|
||||
..L:
|
||||
}
|
||||
|
||||
macro jrcxz Dst
|
||||
{
|
||||
jecxz Dst
|
||||
}
|
||||
|
||||
use32
|
||||
InitDefault:
|
||||
mov [DefInst.Arch],CPUX32
|
||||
mov [DefInst.Size],15
|
||||
mov [DefInst.Negate],True
|
||||
|
||||
mov [DefInst.Base],-1
|
||||
mov [DefInst.Indx],-1
|
||||
mov [DefInst.Scale],-1
|
||||
ret
|
||||
|
||||
include "disasm.asm"
|
||||
|
||||
CrLf db 0
|
||||
TheL db 0
|
||||
LastByte db 0
|
||||
IgnoreInvalid db 0 ;Ignore invalid VEX/XOP
|
||||
SpaceSize dd 8
|
||||
Origin dd 0
|
||||
TheBufferO dd 0
|
||||
|
||||
_r8_ dd ?
|
||||
_r9_ dd ?
|
||||
_r10_ dq ?
|
||||
_r15_ dq ?
|
26
programs/develop/koldbg/disasm/disasm64.asm
Normal file
26
programs/develop/koldbg/disasm/disasm64.asm
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
BufferSizeI = 1k
|
||||
BufferSizeO = 1k
|
||||
|
||||
use64
|
||||
InitDefault:
|
||||
mov [DefInst.Arch],CPUX64
|
||||
mov [DefInst.Size],15
|
||||
mov [DefInst.Negate],True
|
||||
|
||||
mov [DefInst.HideRIP],True
|
||||
|
||||
mov [DefInst.Base],-1
|
||||
mov [DefInst.Indx],-1
|
||||
mov [DefInst.Scale],-1
|
||||
ret
|
||||
|
||||
include "disasm.asm"
|
||||
|
||||
CrLf db 0
|
||||
TheL db 0
|
||||
LastByte db 0
|
||||
IgnoreInvalid db 0 ;Ignore invalid VEX/XOP
|
||||
SpaceSize dd 8
|
||||
Origin dq 0
|
||||
TheBufferO dq 0
|
693
programs/develop/koldbg/disasm/far-code.inc
Normal file
693
programs/develop/koldbg/disasm/far-code.inc
Normal file
@@ -0,0 +1,693 @@
|
||||
ClrMagicBytes:
|
||||
xor al,al
|
||||
|
||||
SetMagicBytes:
|
||||
|
||||
test al,4
|
||||
setnz dl
|
||||
shl dl,3
|
||||
mov [I.R],dl
|
||||
|
||||
mov bl,-1
|
||||
cmovnz ebx,[NotP4X]
|
||||
mov [I.NotR],bl
|
||||
|
||||
test al,2
|
||||
setnz dl
|
||||
shl dl,3
|
||||
mov [I.X],dl
|
||||
|
||||
mov bl,-1
|
||||
cmovnz ebx,[NotP4X]
|
||||
mov [I.NotX],bl
|
||||
|
||||
test al,1
|
||||
setnz dl
|
||||
shl dl,3
|
||||
mov [I.B],dl
|
||||
|
||||
mov bl,-1
|
||||
cmovnz ebx,[NotP4X]
|
||||
mov [I.NotB],bl
|
||||
|
||||
test al,8
|
||||
setnz [I.W]
|
||||
|
||||
mov bl,-1
|
||||
cmovnz ebx,[NotP4X]
|
||||
mov [I.NotW],bl
|
||||
|
||||
test al,40h
|
||||
setnz [I.P]
|
||||
|
||||
mov bl,-1
|
||||
cmovnz ebx,[NotP4X]
|
||||
mov [I.NotP],bl
|
||||
|
||||
ret
|
||||
|
||||
FetchModRM:
|
||||
FetchB
|
||||
mov [I.ModRM],al
|
||||
|
||||
mov cl,al
|
||||
mov bl,al
|
||||
mov dl,al
|
||||
shr cl,6 ;cl = mod
|
||||
and bl,7 ;bl = r/m
|
||||
shr dl,3
|
||||
and dl,7 ;dl = reg
|
||||
|
||||
mov [I.Mod],cl
|
||||
mov [I.Reg],dl
|
||||
mov [I.RM],bl
|
||||
|
||||
call ModRM2EA
|
||||
|
||||
mov al,[I.ModRM]
|
||||
ret
|
||||
|
||||
TWorFW: cmp [I.Syntax],0
|
||||
jnz .Exit
|
||||
mov [I.RandSize],VTWORD
|
||||
cmp [I.Arch],CPUX64
|
||||
jz .Exit
|
||||
mov [I.RandSize],VFWORD
|
||||
.Exit:
|
||||
ret
|
||||
|
||||
SetArg2W:
|
||||
cmp [I.Fasm],0
|
||||
jz .Exit
|
||||
mov [I.Arg2.Type],GPR16
|
||||
.Exit: ret
|
||||
|
||||
SetArg12X:
|
||||
mov [I.Arg1.Type],XMMRG
|
||||
mov [I.Arg2.Type],XMMRG
|
||||
ret
|
||||
|
||||
RM32R32C:
|
||||
call RM32R32M
|
||||
|
||||
mov [I.Arg1.Type],GPR64
|
||||
mov [I.Arg2.Type],CTRRG
|
||||
|
||||
cmp [I.Arch],CPUX64
|
||||
je .L1
|
||||
mov [I.Arg1.Type],GPR32
|
||||
;lock mov reg,cr0 = mov reg,cr8
|
||||
;lock mov cr0,reg = mov cr8,reg
|
||||
cmp [I.Reg],0
|
||||
jne .L1
|
||||
BitTR I.Prefixes,PF0
|
||||
jnc .L1
|
||||
mov [I.Reg],8
|
||||
.L1: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
CheckPrevSSE4:
|
||||
mov ecx,(EndSSE4-TabSSE4)/3
|
||||
mov edx,TabSSE4
|
||||
.L1: cmp al,[rdx]
|
||||
je .L2
|
||||
add edx,3
|
||||
loop .L1
|
||||
stc
|
||||
ret
|
||||
.L2: mov edx,[rdx+1]
|
||||
mov [I.Name],dx
|
||||
call rbx
|
||||
mov [I.RandSize],VQWORD+80h
|
||||
clc
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
CheckNextSSE4:
|
||||
mov ecx,(EndNxtSSE4-NxtSSE4)/4
|
||||
mov edx,NxtSSE4
|
||||
.L1: cmp al,[rdx]
|
||||
je .L2
|
||||
add edx,4
|
||||
loop .L1
|
||||
stc
|
||||
ret
|
||||
.L2: mov ecx,[rdx+1]
|
||||
mov [I.RandSize],cl
|
||||
shr ecx,8
|
||||
mov [I.Name],cx
|
||||
|
||||
cmp al,2Ah
|
||||
jne .2A
|
||||
cmp byte [rsi],0xC0
|
||||
jae ErrorDec
|
||||
.2A:
|
||||
cmp al,15h
|
||||
ja .L3
|
||||
mov [I.Arg3.Type],XMMRG
|
||||
.L3: call R32RM32X
|
||||
clc
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
R32RM32C:
|
||||
call R32RM32M
|
||||
|
||||
mov [I.Arg2.Type],GPR64
|
||||
mov [I.Arg1.Type],CTRRG
|
||||
|
||||
cmp [I.Arch],CPUX64
|
||||
je .L1
|
||||
mov [I.Arg2.Type],GPR32
|
||||
;lock mov reg,cr0 = mov reg,cr8
|
||||
;lock mov cr0,reg = mov cr8,reg
|
||||
cmp [I.Reg],0
|
||||
jne .L1
|
||||
BitTR I.Prefixes,PF0
|
||||
jnc .L1
|
||||
mov [I.Reg],8
|
||||
.L1: ret
|
||||
|
||||
RM32R32D:
|
||||
call RM32R32M
|
||||
|
||||
mov [I.Arg1.Type],GPR64
|
||||
mov [I.Arg2.Type],DBGRG
|
||||
|
||||
cmp [I.Arch],CPUX64
|
||||
je .L1
|
||||
mov [I.Arg1.Type],GPR32
|
||||
.L1: ret
|
||||
|
||||
R32RM32D:
|
||||
call R32RM32M
|
||||
|
||||
mov [I.Arg2.Type],GPR64
|
||||
mov [I.Arg1.Type],DBGRG
|
||||
|
||||
cmp [I.Arch],CPUX64
|
||||
je .L1
|
||||
mov [I.Arg2.Type],GPR32
|
||||
.L1: ret
|
||||
|
||||
RM32R32T:
|
||||
call RM32R32M
|
||||
|
||||
mov [I.Arg1.Type],GPR64
|
||||
mov [I.Arg2.Type],TRXRG
|
||||
|
||||
cmp [I.Arch],CPUX64
|
||||
je .L1
|
||||
mov [I.Arg1.Type],GPR32
|
||||
.L1: ret
|
||||
|
||||
R32RM32T:
|
||||
call R32RM32M
|
||||
|
||||
mov [I.Arg2.Type],GPR64
|
||||
mov [I.Arg1.Type],TRXRG
|
||||
|
||||
cmp [I.Arch],CPUX64
|
||||
je .L1
|
||||
mov [I.Arg2.Type],GPR32
|
||||
.L1: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
BNDX4: mov [I.Arg2.Type],GPR64
|
||||
mov [I.RandSize],VQWORD+80h
|
||||
cmp [I.Arch],CPUX64
|
||||
jz .Next
|
||||
mov [I.RandSize],VDWORD+80h
|
||||
mov [I.Arg2.Type],GPR32
|
||||
.Next: ;jmp BNDX1
|
||||
;-----------------------------------------------------------------------------
|
||||
BNDX1: mov [I.Arg1.Type],BNDRG
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
BNDX3: mov [I.Arg1.Type],BNDRG
|
||||
BNDX2: mov [I.Arg2.Type],BNDRG
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
Rtn0F3A14:
|
||||
mov [I.RandSize],VBYTE+80h
|
||||
mov dx,TPEXTRB
|
||||
.L0: BitTR I.Prefixes,P66
|
||||
jnc ErrorDec
|
||||
mov [I.Name],dx
|
||||
call RM32R32X
|
||||
mov [I.Arg1.Type],GPR32
|
||||
cmp [I.W],0
|
||||
jz .L1
|
||||
mov [I.Arg1.Type],GPR64
|
||||
.L1: call ClearW
|
||||
FetchB
|
||||
mov [I.Arg3.Type],80h+1
|
||||
mov [I.Arg3.ImmB],al
|
||||
ret
|
||||
Rtn0F3A15:
|
||||
mov [I.RandSize],VWORD+80h
|
||||
mov dx,TPEXTRW
|
||||
jmp Rtn0F3A14.L0
|
||||
Rtn0F3A16:
|
||||
mov [I.RandSize],VDWORD+80h
|
||||
mov dx,TPEXTRD
|
||||
test [I.W],0
|
||||
jz .L1
|
||||
mov [I.RandSize],VQWORD+80h
|
||||
mov dx,TPEXTRQ
|
||||
.L1: jmp Rtn0F3A14.L0
|
||||
Rtn0F3A17:
|
||||
mov [I.RandSize],VDWORD+80h
|
||||
mov dx,TEXTRACTPS
|
||||
jmp Rtn0F3A14.L0
|
||||
Rtn0F3A20:
|
||||
mov [I.RandSize],VBYTE+80h
|
||||
BitTR I.Prefixes,P66
|
||||
jnc ErrorDec
|
||||
mov [I.Name],TPINSRB
|
||||
call R32RM32X
|
||||
FetchB
|
||||
mov [I.Arg2.Type],GPR32
|
||||
mov [I.Arg3.Type],80h+1
|
||||
mov [I.Arg3.ImmB],al
|
||||
ret
|
||||
Rtn0F3A21:
|
||||
mov [I.RandSize],VDWORD+80h
|
||||
BitTR I.Prefixes,P66
|
||||
jnc ErrorDec
|
||||
mov [I.Name],TINSERTPS
|
||||
call R32RM32X
|
||||
FetchB
|
||||
mov [I.Arg3.Type],80h+1
|
||||
mov [I.Arg3.ImmB],al
|
||||
ret
|
||||
Rtn0F3A22:
|
||||
call R32RM32X
|
||||
mov [I.RandSize],VDWORD+80h
|
||||
BitTR I.Prefixes,P66
|
||||
jnc ErrorDec
|
||||
mov dx,TPINSRD
|
||||
mov [I.Arg2.Type],GPR32
|
||||
cmp [I.W],0
|
||||
jz .L1
|
||||
mov dx,TPINSRQ
|
||||
mov [I.Arg2.Type],GPR64
|
||||
.L1: mov [I.Name],dx
|
||||
call ClearW
|
||||
FetchB
|
||||
.L2: mov [I.Arg3.Type],80h+1
|
||||
mov [I.Arg3.ImmB],al
|
||||
ret
|
||||
Rtn0F3A44:
|
||||
mov [I.RandSize],VXWORD+80h
|
||||
mov [I.Name],TPCLMULQDQ
|
||||
BitTR I.Prefixes,P66
|
||||
jnc ErrorDec
|
||||
call R32RM32X
|
||||
xor eax,eax
|
||||
FetchB
|
||||
cmp al,18
|
||||
ja Rtn0F3A22.L2
|
||||
mov edx,[rax*2+TabCLMUL]
|
||||
or dx,dx
|
||||
jz Rtn0F3A22.L2
|
||||
mov [I.Name],dx
|
||||
ret
|
||||
|
||||
SetArg3Imm:
|
||||
FetchB
|
||||
mov [I.Arg3.Type],80h+1
|
||||
mov [I.Arg3.ImmB],al
|
||||
ret
|
||||
|
||||
SetArg3CL:
|
||||
mov [I.Arg3.Type],GPR08
|
||||
mov [I.Arg3.Reg],RRCX
|
||||
ret
|
||||
|
||||
RtnXOP: mov ebx,R32RM32X
|
||||
test [I.FlagsXOP],XOPO
|
||||
jnz .Z1
|
||||
mov ebx,RM32R32X
|
||||
.Z1: call rbx
|
||||
cmp [I.MMMMM],8
|
||||
jnz .Z2
|
||||
test [I.FlagsXOP],XOPI
|
||||
jz .Z2
|
||||
FetchB
|
||||
mov [I.Arg3.Type],80h+1
|
||||
mov [I.Arg3.ImmB],al
|
||||
.Z2: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
SetVT3: push CheckVT3
|
||||
SetVT: mov [I.Base],-1
|
||||
mov [I.Indx],-1
|
||||
mov [I.Scale],-1
|
||||
mov [I.DispSize],0
|
||||
|
||||
cmp [I.Arch],CPUX64
|
||||
jz .L1
|
||||
mov [I.Address],AD32
|
||||
.L1:
|
||||
mov rsi,[I.SaveRSI]
|
||||
push rax
|
||||
sub al,XMMRG-ADXX
|
||||
mov [I.VT],al
|
||||
call FetchModRM
|
||||
pop rax
|
||||
|
||||
cmp [I.Arch],CPUX64
|
||||
jz .L2
|
||||
BitT I.PrefixesCpy,P67
|
||||
jnc .L2
|
||||
BitTS I.Prefixes,P67
|
||||
.L2:
|
||||
cmp [I.Relative],0
|
||||
jnz ErrorDec
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
CheckVT3:
|
||||
cmp [I.Mod],3
|
||||
jz ErrorDec
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnPINSR?:
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
cmp [I.Arch],CPUX64
|
||||
jnz ErrorDec
|
||||
mov [I.RandSize],VQWORD+80h
|
||||
mov [I.LastByte],'q'
|
||||
mov [I.Arg3.Type],GPR64
|
||||
.L1: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
MoveKandZ:
|
||||
test byte [I.FlagsEVEX],EVEXS
|
||||
jnz .L1
|
||||
mov al,[I.AAAA]
|
||||
or al,al
|
||||
jz .L1
|
||||
mov al,'{'
|
||||
stosb
|
||||
cmp [I.Syntax],0
|
||||
jz .L0
|
||||
mov al,'%'
|
||||
stosb
|
||||
.L0:
|
||||
mov al,'k'
|
||||
stosb
|
||||
mov al,[I.AAAA]
|
||||
add al,'0'
|
||||
stosb
|
||||
mov al,'}'
|
||||
stosb
|
||||
.L1:
|
||||
mov al,[I.Z]
|
||||
or al,al
|
||||
jz .L2
|
||||
mov al,'{'
|
||||
stosb
|
||||
mov al,'z'
|
||||
stosb
|
||||
mov al,'}'
|
||||
stosb
|
||||
.L2:
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
GetP0P1P2:
|
||||
;P0
|
||||
lodsb
|
||||
cmp rsi,r9
|
||||
ja .Error
|
||||
test al,1100b
|
||||
jnz .Error
|
||||
mov ah,al
|
||||
and al,11b
|
||||
mov [I.MMMMM],al
|
||||
mov al,ah
|
||||
|
||||
test al,10000000b
|
||||
setz [I.R]
|
||||
test al,00010000b
|
||||
setz dl
|
||||
shl dl,1
|
||||
or [I.R],dl
|
||||
shl [I.R],3
|
||||
|
||||
test al,01000000b
|
||||
setz [I.X]
|
||||
shl [I.X],3
|
||||
|
||||
test al,00100000b
|
||||
setz [I.B]
|
||||
shl [I.B],3
|
||||
|
||||
mov al,[I.X]
|
||||
shl al,1
|
||||
mov [I.XX],al
|
||||
|
||||
mov [I.P],1
|
||||
|
||||
;P1
|
||||
lodsb
|
||||
cmp rsi,r9
|
||||
ja .Error
|
||||
test al,100b
|
||||
jz .Error
|
||||
mov ah,al
|
||||
and al,11b
|
||||
mov [I.PP],al
|
||||
mov al,ah
|
||||
shr al,3
|
||||
and al,1111b
|
||||
xor al,1111b
|
||||
mov [I.VVVV],al
|
||||
mov al,ah
|
||||
rol al,1
|
||||
and al,1b
|
||||
mov [I.W],al
|
||||
;P2
|
||||
lodsb
|
||||
cmp rsi,r9
|
||||
ja .Error
|
||||
mov ah,al
|
||||
and al,111b
|
||||
mov [I.AAAA],al
|
||||
mov al,ah
|
||||
xor dl,dl
|
||||
shl al,1
|
||||
rcl dl,1
|
||||
mov [I.Z],dl
|
||||
mov al,ah
|
||||
and al,1000b
|
||||
xor al,1000b
|
||||
jz .L1
|
||||
add [I.V],16
|
||||
.L1:
|
||||
shl al,1
|
||||
or [I.VVVV],al
|
||||
mov al,ah
|
||||
and al,1100000b
|
||||
cmp al,1100000b
|
||||
shr al,5
|
||||
mov [I.LL],al
|
||||
test ah,10000b
|
||||
setnz [I.BB]
|
||||
;
|
||||
movzx eax,[I.PP]
|
||||
mov edx,[rax*4+T6200Tab]
|
||||
mov ebx,[rax*4+T6238Tab]
|
||||
mov ecx,[rax*4+T623ATab]
|
||||
;
|
||||
mov al,[I.MMMMM]
|
||||
or al,al
|
||||
jz .Error
|
||||
cmp al,00011b
|
||||
jne .L2
|
||||
mov edx,ecx
|
||||
.L2:
|
||||
cmp al,00010b
|
||||
jne .L3
|
||||
mov edx,ebx
|
||||
.L3:
|
||||
lodsb
|
||||
cmp rsi,r9
|
||||
ja .Error
|
||||
mov ebx,edx
|
||||
;
|
||||
mov [I.SaveRSI],rsi
|
||||
ret
|
||||
;
|
||||
.Error: pop rax
|
||||
jmp BNDEVEX62.Error
|
||||
;-----------------------------------------------------------------------------
|
||||
DetectMULT:
|
||||
cmp [I.Is62],0
|
||||
jz .L2
|
||||
mov al,[I.RandSize]
|
||||
mov ah,1
|
||||
cmp al,xW
|
||||
jz .L1
|
||||
mov ah,2
|
||||
cmp al,xD
|
||||
jz .L1
|
||||
mov ah,3
|
||||
cmp al,xQ
|
||||
jz .L1
|
||||
mov ah,4
|
||||
cmp al,xO
|
||||
jz .L1
|
||||
mov ah,5
|
||||
cmp al,xY
|
||||
jz .L1
|
||||
mov ah,6
|
||||
cmp al,xZ
|
||||
jz .L1
|
||||
xor ah,ah
|
||||
.L1:
|
||||
mov [I.MULT],ah
|
||||
.L2:
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
MoveXtoX:
|
||||
cmp [I.Mod],3
|
||||
jz .V1
|
||||
cmp [I.BB],0
|
||||
jz .V1
|
||||
movzx eax,[I.LL]
|
||||
test byte [I.FlagsEVEX+2],EVEXAA shr 16
|
||||
jnz .V0
|
||||
cmp [I.RandSize],xQ
|
||||
jz .V0
|
||||
inc eax
|
||||
.V0: mov esi,dword [rax*2+T1TO]
|
||||
call MoveStringData
|
||||
.V1: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
MoveSAE1:
|
||||
cmp [I.Mod],3
|
||||
jnz .E1
|
||||
test byte [I.FlagsEVEX],EVEXO
|
||||
jz .L1
|
||||
cmp [I.W],0
|
||||
jz .E1
|
||||
.L1:
|
||||
test byte [I.FlagsEVEX],EVEXR
|
||||
jz .E2
|
||||
cmp [I.BB],0
|
||||
jz .E1
|
||||
mov al,','
|
||||
stosb
|
||||
movzx eax,[I.LL]
|
||||
mov esi,dword [rax*2+TSAE]
|
||||
call MoveStringData
|
||||
.E1: ret
|
||||
.E2: cmp [I.BB],0
|
||||
jz .E3
|
||||
cmp [I.LL],00b
|
||||
jnz .E3
|
||||
if %B=64
|
||||
mov rax,',{sae}'
|
||||
stosq
|
||||
sub rdi,2
|
||||
else
|
||||
mov ax,',{'
|
||||
stosw
|
||||
mov eax,'sae}'
|
||||
stosd
|
||||
end if
|
||||
.E3: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
MoveSAE2:
|
||||
cmp [I.Mod],3
|
||||
jnz .E1
|
||||
test byte [I.FlagsEVEX],EVEXO
|
||||
jz .L1
|
||||
cmp [I.W],0
|
||||
jz .E1
|
||||
.L1:
|
||||
test byte [I.FlagsEVEX],EVEXR
|
||||
jz .E2
|
||||
cmp [I.BB],0
|
||||
jz .E1
|
||||
movzx eax,[I.LL]
|
||||
mov esi,dword [rax*2+TSAE]
|
||||
call MoveStringData
|
||||
mov al,','
|
||||
stosb
|
||||
.E1: ret
|
||||
.E2: cmp [I.BB],0
|
||||
jz .E3
|
||||
cmp [I.LL],00b
|
||||
jnz .E3
|
||||
if %B=64
|
||||
mov rax,'{sae},'
|
||||
stosq
|
||||
sub rdi,2
|
||||
else
|
||||
mov eax,'{sae'
|
||||
stosd
|
||||
mov ax,'},'
|
||||
stosw
|
||||
end if
|
||||
.E3: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
GetVectorAL:
|
||||
test byte [I.FlagsEVEX],EVEXX
|
||||
jnz .L1
|
||||
mov al,ZMMRG
|
||||
cmp [I.BB],0
|
||||
jnz .L0
|
||||
test [I.LL],10b
|
||||
jnz .L0
|
||||
mov al,YMMRG
|
||||
test [I.LL],01b
|
||||
jnz .L0
|
||||
.L1: mov al,XMMRG
|
||||
.L0: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
GetVectorAndMUL:
|
||||
test byte [I.FlagsEVEX],EVEXX
|
||||
jnz .L4
|
||||
;
|
||||
mov ah,[I.LL]
|
||||
|
||||
mov al,ZMMRG
|
||||
;
|
||||
cmp [I.Mod],3
|
||||
jnz .LX
|
||||
cmp [I.BB],0
|
||||
jnz .L0
|
||||
.LX: ;
|
||||
test ah,10b
|
||||
jnz .L0
|
||||
mov al,YMMRG
|
||||
test ah,01b
|
||||
jnz .L0
|
||||
mov al,XMMRG
|
||||
;
|
||||
.L0: mov ah,al
|
||||
;
|
||||
cmp [I.BB],0
|
||||
jnz .L3
|
||||
cmp al,YMMRG
|
||||
jz .L2
|
||||
ja .L1
|
||||
ret
|
||||
;
|
||||
.L1: call .L2
|
||||
.L2: inc [I.RandSize]
|
||||
.L3: ret
|
||||
.L4: mov al,XMMRG
|
||||
mov ah,al
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
GetRDRQAH:
|
||||
mov ah,GPR32
|
||||
cmp [I.W],1
|
||||
jnz .L1
|
||||
mov ah,GPR64
|
||||
.L1: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
GetRDRQAL:
|
||||
mov al,GPR32
|
||||
cmp [I.W],1
|
||||
jnz .L1
|
||||
mov al,GPR64
|
||||
.L1: ret
|
BIN
programs/develop/koldbg/disasm/qopcodes.bin
Normal file
BIN
programs/develop/koldbg/disasm/qopcodes.bin
Normal file
Binary file not shown.
1640
programs/develop/koldbg/disasm/qopcodes.inc
Normal file
1640
programs/develop/koldbg/disasm/qopcodes.inc
Normal file
File diff suppressed because it is too large
Load Diff
556
programs/develop/koldbg/disasm/rtn-62xx.inc
Normal file
556
programs/develop/koldbg/disasm/rtn-62xx.inc
Normal file
@@ -0,0 +1,556 @@
|
||||
;-----------------------------------------------------------------------------
|
||||
BNDEVEX62:
|
||||
cmp byte [rsi],0xC0
|
||||
jae EVEX62
|
||||
;
|
||||
call GetP0P1P2
|
||||
jmp EVEX62.Loop
|
||||
;
|
||||
.Error: cmp [I.Arch],CPUX64
|
||||
jz ErrorDec
|
||||
;
|
||||
xor al,al
|
||||
;
|
||||
mov [I.R],al
|
||||
mov [I.X],al
|
||||
mov [I.B],al
|
||||
mov [I.W],al
|
||||
mov [I.V],al
|
||||
mov [I.Z],al
|
||||
mov [I.BB],al
|
||||
mov [I.XX],al
|
||||
mov [I.VVVV],al
|
||||
mov [I.AAAA],al
|
||||
;
|
||||
mov rsi,[I.SaveRSI]
|
||||
;
|
||||
BitTR I.Prefixes,P66
|
||||
cmp [I.Operand],0
|
||||
mov [I.RandSize],VQWORD+80h ;32:32
|
||||
jnz R32RM32
|
||||
mov [I.RandSize],VDWORD+80h ;16:16
|
||||
jmp R16RM16
|
||||
;-----------------------------------------------------------------------------
|
||||
EVEX62: cmp [I.PreREX],0
|
||||
jnz ErrorDec
|
||||
call GetP0P1P2
|
||||
.Loop:
|
||||
mov [I.Is62],1
|
||||
|
||||
cmp dword [rbx],-1
|
||||
jz ErrorDec
|
||||
cmp al,[rbx+X62.Imm]
|
||||
je .Found
|
||||
add ebx,X62.Size
|
||||
jmp .Loop
|
||||
.Found:
|
||||
mov al,[rbx+X62.MOS]
|
||||
cmp [I.BB],0
|
||||
jnz .L1
|
||||
shr al,4
|
||||
.L1:
|
||||
and al,0Fh
|
||||
mov [I.RandSize],al
|
||||
;
|
||||
mov eax,dword [rbx+X62.Flags]
|
||||
mov word [I.FlagsEVEX],ax
|
||||
;
|
||||
and ah,EVEXLX shr 8
|
||||
cmp ah,EVEXLX shr 8
|
||||
jnz .L2
|
||||
cmp [I.LL],00b
|
||||
jnz ErrorDec
|
||||
jmp .SkipLX
|
||||
.L2: ;
|
||||
test ah,EVEXL0 shr 8
|
||||
jz .L3
|
||||
cmp [I.LL],00b
|
||||
jz ErrorDec
|
||||
.L3: ;
|
||||
test ah,EVEXLL shr 8
|
||||
jz .L4
|
||||
cmp [I.LL],10b
|
||||
jb ErrorDec
|
||||
.L4:
|
||||
;
|
||||
.SkipLX:
|
||||
;
|
||||
mov ah,al
|
||||
and ah,EVEXW0
|
||||
cmp ah,EVEXW0
|
||||
jnz .L5
|
||||
cmp [I.Arch],CPUX64
|
||||
jz .SkipWNW
|
||||
mov [I.W],0
|
||||
jmp .SkipWNW
|
||||
.L5: ;
|
||||
test al,EVEXYW
|
||||
jz .L6
|
||||
cmp [I.W],1
|
||||
jz ErrorDec
|
||||
.L6: ;
|
||||
test al,EVEXNW
|
||||
jz .L7
|
||||
cmp [I.W],0
|
||||
jz ErrorDec
|
||||
.L7:
|
||||
;
|
||||
.SkipWNW:
|
||||
;
|
||||
test al,EVEXV
|
||||
jz .L8
|
||||
mov al,[I.VVVV]
|
||||
and al,1111b
|
||||
or al,al
|
||||
jnz ErrorDec
|
||||
.L8: ;
|
||||
mov edx,dword [rbx+X62.Name]
|
||||
mov al,byte [rbx+X62.Flags+1]
|
||||
and al,EVEXE shr 8
|
||||
cmp al,EVEXE shr 8
|
||||
jnz .L9
|
||||
movzx eax,[I.W]
|
||||
movzx edx,dx
|
||||
add edx,T62Names
|
||||
mov edx,[rdx+rax*2]
|
||||
.L9:
|
||||
mov [I.Prefix],'v'
|
||||
mov [I.Name],dx
|
||||
|
||||
cmp [I.W],1
|
||||
jnz .LA
|
||||
mov al,byte [rbx+X62.Flags+1]
|
||||
and al,EVEXE shr 8
|
||||
cmp al,EVEXE shr 8
|
||||
jz .LA
|
||||
test al,EVEXD1 shr 8
|
||||
ifnz mov [I.LastByte],'d'
|
||||
test al,EVEXQ1 shr 8
|
||||
ifnz mov [I.LastByte],'q'
|
||||
.LA: ;
|
||||
movzx r8d,word [rbx+X62.Rtn]
|
||||
add r8d,RtnXX
|
||||
test [rbx+X62.Flags],EVEX2
|
||||
jz .LB
|
||||
movzx eax,[I.W]
|
||||
movzx r8d,word [r8+rax*2]
|
||||
add r8d,RtnXX
|
||||
.LB: ;
|
||||
call FetchModRM
|
||||
test byte [I.FlagsEVEX+1],EVEXM shr 8
|
||||
jz .LC
|
||||
call GetVectorAndMUL
|
||||
.LC:
|
||||
test byte [I.FlagsEVEX+1],EVEXU shr 8
|
||||
jnz .SkipBB
|
||||
test byte [I.FlagsEVEX+1],EVEXB shr 8
|
||||
jz .LD
|
||||
;
|
||||
cmp [I.BB],0
|
||||
jz .LD
|
||||
.SkipBB:
|
||||
cmp [I.W],1
|
||||
jnz .LD
|
||||
;inc [I.MULT]
|
||||
inc [I.RandSize]
|
||||
.LD:
|
||||
call r8
|
||||
;
|
||||
test byte [I.FlagsEVEX+1],EVEXI shr 8
|
||||
jz .LG
|
||||
lea r8,[I.Arg1]
|
||||
mov ecx,5
|
||||
.LE:
|
||||
cmp [r8+TArg.Type],0
|
||||
jz .LF
|
||||
add r8,sizeof.TArg
|
||||
loop .LE
|
||||
ret
|
||||
.LF:
|
||||
FetchB
|
||||
mov [r8+TArg.Type],80h+1
|
||||
mov [r8+TArg.ImmB],al
|
||||
.LG: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
T6244:
|
||||
cmp [I.ModRM],3
|
||||
jz ErrorDec
|
||||
cmp [I.BB],1
|
||||
jz ErrorDec
|
||||
mov [I.RandSize],VOWORD
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
mov [I.Arg3.Type2nd],InRM or 80h
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg3.Type],ah
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
T6214:
|
||||
call GetRDRQAH
|
||||
;jmp T6201
|
||||
;-----------------------------------------------------------------------------
|
||||
T6201:
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
mov [I.Arg3.Type2nd],InRM
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg3.Type],ah
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
T6215:
|
||||
mov [I.RandSize],xO
|
||||
mov ah,XMMRG
|
||||
jmp T6201
|
||||
;-----------------------------------------------------------------------------
|
||||
T6200:
|
||||
mov [I.RandSize],xD
|
||||
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type],ah
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
|
||||
cmp [I.W],0
|
||||
jz .L1
|
||||
|
||||
inc [I.RandSize]
|
||||
|
||||
dec al
|
||||
cmp al,XMMRG
|
||||
jae .L1
|
||||
mov al,XMMRG
|
||||
.L1: jmp SetVT3
|
||||
;-----------------------------------------------------------------------------
|
||||
T621B:
|
||||
mov [I.RandSize],xQ
|
||||
;
|
||||
cmp [I.W],0
|
||||
jnz .L1
|
||||
;
|
||||
dec [I.RandSize]
|
||||
;
|
||||
dec al
|
||||
cmp al,XMMRG
|
||||
jae .L1
|
||||
mov al,XMMRG
|
||||
;
|
||||
.L1:
|
||||
;
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type],ah
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
;
|
||||
mov al,ah
|
||||
jmp SetVT3
|
||||
;-----------------------------------------------------------------------------
|
||||
T6202:
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
mov [I.Arg3.Type2nd],InRM
|
||||
mov [I.Arg1.Type],KXXRG
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg3.Type],ah
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
T6219:
|
||||
cmp [I.Mod],3
|
||||
jz ErrorDec
|
||||
;jmp T6203
|
||||
;-----------------------------------------------------------------------------
|
||||
T6203:
|
||||
mov ah,XMMRG
|
||||
call GetVectorAL
|
||||
T6204:
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],ah
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
T621A:
|
||||
cmp [I.Mod],3
|
||||
jz ErrorDec
|
||||
mov al,ZMMRG
|
||||
mov ah,XMMRG
|
||||
jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T6208:
|
||||
cmp [I.BB],0
|
||||
jz .L1
|
||||
dec [I.RandSize]
|
||||
.L1:
|
||||
jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T6209:
|
||||
or byte [I.FlagsEVEX+2],EVEXAA shr 16
|
||||
;
|
||||
cmp [I.BB],0
|
||||
jnz .L1
|
||||
dec [I.RandSize]
|
||||
.L1:
|
||||
T6207:
|
||||
dec ah
|
||||
cmp ah,XMMRG
|
||||
jae .L1
|
||||
mov ah,XMMRG
|
||||
.L1: jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T6205:
|
||||
dec al
|
||||
cmp al,XMMRG
|
||||
jae .L1
|
||||
mov al,XMMRG
|
||||
.L1:
|
||||
jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T6206:
|
||||
cmp [I.W],0
|
||||
jnz T6204
|
||||
;
|
||||
dec [I.RandSize]
|
||||
;
|
||||
or byte [I.FlagsEVEX+2],EVEXAA shr 16
|
||||
;
|
||||
jmp T6207
|
||||
;-----------------------------------------------------------------------------
|
||||
T620A:
|
||||
dec ah
|
||||
cmp ah,XMMRG
|
||||
jae .L1
|
||||
mov ah,XMMRG
|
||||
.L1:
|
||||
T620B:
|
||||
mov [I.Arg2.Type2nd],InReg
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg1.Type],ah
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
T6223:
|
||||
mov al,XMMRG
|
||||
mov ah,GPR32
|
||||
jmp T620B
|
||||
;-----------------------------------------------------------------------------
|
||||
T6221: mov [I.RandSize],xO
|
||||
;call DetectMULT
|
||||
;jmp T6220
|
||||
;-----------------------------------------------------------------------------
|
||||
T6220:
|
||||
mov ah,XMMRG
|
||||
jmp T620B
|
||||
;-----------------------------------------------------------------------------
|
||||
T6222:
|
||||
mov [I.RandSize],xY
|
||||
;call DetectMULT
|
||||
mov ah,YMMRG
|
||||
jmp T620B
|
||||
;-----------------------------------------------------------------------------
|
||||
T620C:
|
||||
cmp [I.Mod],3
|
||||
jnz T6201
|
||||
mov [I.Name],TMOVHLPS
|
||||
jmp T6201
|
||||
;-----------------------------------------------------------------------------
|
||||
T620D:
|
||||
cmp [I.Mod],3
|
||||
jz ErrorDec
|
||||
jmp T6201
|
||||
;-----------------------------------------------------------------------------
|
||||
T620E:
|
||||
cmp [I.Mod],3
|
||||
jnz .L1
|
||||
mov [I.Name],TMOVLHPS
|
||||
.L1: jmp T6201
|
||||
;-----------------------------------------------------------------------------
|
||||
T620F:
|
||||
cmp [I.Mod],3
|
||||
jz ErrorDec
|
||||
jmp T620B
|
||||
;-----------------------------------------------------------------------------
|
||||
T6210:
|
||||
cmp [I.Mod],3
|
||||
jz ErrorDec
|
||||
jmp T620B
|
||||
;-----------------------------------------------------------------------------
|
||||
T621C:
|
||||
cmp [I.Mod],3
|
||||
jz ErrorDec
|
||||
jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T6211:
|
||||
call GetRDRQAH
|
||||
jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T6212:
|
||||
call GetRDRQAH
|
||||
jmp T620B
|
||||
;-----------------------------------------------------------------------------
|
||||
T6213:
|
||||
call GetRDRQAL
|
||||
jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T6271:
|
||||
mov ebx,T0F71N
|
||||
movzx edx,[I.Reg]
|
||||
.L0: mov dx,[rdx*2+rbx]
|
||||
or dx,dx
|
||||
jz ErrorDec
|
||||
mov [I.Name],dx
|
||||
mov [I.Arg1.Type2nd],InVVVV
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],ah
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
T6272:
|
||||
mov ebx,T0F72N
|
||||
.L0: movzx edx,[I.Reg]
|
||||
cmp [I.W],1
|
||||
jnz .L1
|
||||
add dl,8
|
||||
.L1: jmp T6271.L0
|
||||
;-----------------------------------------------------------------------------
|
||||
T6273:
|
||||
mov ebx,T0F73N
|
||||
jmp T6272.L0
|
||||
;-----------------------------------------------------------------------------
|
||||
T6216:
|
||||
cmp [I.VVVV],00000b
|
||||
jnz T6201
|
||||
jmp T6203
|
||||
;-----------------------------------------------------------------------------
|
||||
T6217:
|
||||
cmp [I.VVVV],00000b
|
||||
jnz T6201
|
||||
jmp T620B
|
||||
;-----------------------------------------------------------------------------
|
||||
T6218:
|
||||
cmp al,XMMRG
|
||||
jz .L1
|
||||
inc [I.RandSize]
|
||||
.L1: jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T62RD: call GetRDRQAH
|
||||
jmp T62RB.L0
|
||||
;-----------------------------------------------------------------------------
|
||||
T62RW: mov ah,GPR16
|
||||
jmp T62RB.L0
|
||||
;-----------------------------------------------------------------------------
|
||||
T62RB: mov ah,GPR08
|
||||
.L0: cmp [I.Mod],3
|
||||
jnz ErrorDec
|
||||
call GetVectorAL
|
||||
mov [I.XX],0
|
||||
jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T62V1XYZ:
|
||||
mov [I.RandSize],xD
|
||||
;
|
||||
cmp [I.W],0
|
||||
jz .L1
|
||||
;
|
||||
inc [I.RandSize]
|
||||
;
|
||||
dec al
|
||||
cmp al,XMMRG
|
||||
jae .L1
|
||||
mov al,XMMRG
|
||||
.L1: ;
|
||||
call SetVT3
|
||||
;
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
mov [I.Arg2.Type2nd],InReg
|
||||
mov [I.Arg1.Type],ah
|
||||
;
|
||||
mov dl,[I.RandSize]
|
||||
call GetVectorAndMUL
|
||||
mov [I.RandSize],dl
|
||||
mov [I.Arg2.Type],al
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
T62V2XYZ:
|
||||
mov [I.RandSize],xQ
|
||||
;
|
||||
cmp [I.W],0
|
||||
jnz .L1
|
||||
;
|
||||
dec [I.RandSize]
|
||||
;
|
||||
dec al
|
||||
cmp al,XMMRG
|
||||
jae .L1
|
||||
mov al,XMMRG
|
||||
;
|
||||
.L1: push rax
|
||||
mov al,ah
|
||||
call SetVT3
|
||||
pop rax
|
||||
;
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
mov [I.Arg2.Type2nd],InReg
|
||||
mov [I.Arg1.Type],ah
|
||||
mov [I.Arg2.Type],al
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
T62XYZVV1:
|
||||
movzx edx,[I.Reg]
|
||||
cmp [I.W],0
|
||||
jz .L1
|
||||
add dl,8
|
||||
.L1:
|
||||
mov edx,[rdx*2+T??C6N]
|
||||
or dx,dx
|
||||
jz ErrorDec
|
||||
mov [I.Name],dx
|
||||
|
||||
mov al,ZMMRG
|
||||
cmp [I.W],0
|
||||
jz .L2
|
||||
mov al,YMMRG
|
||||
.L2:
|
||||
mov [I.Arg1.Type],ah
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
jmp SetVT3
|
||||
;-----------------------------------------------------------------------------
|
||||
T62XYZVV2:
|
||||
movzx edx,[I.Reg]
|
||||
cmp [I.W],0
|
||||
jz .L1
|
||||
add dl,8
|
||||
.L1:
|
||||
mov edx,[rdx*2+T??C7N]
|
||||
or dx,dx
|
||||
jz ErrorDec
|
||||
mov [I.Name],dx
|
||||
mov al,ZMMRG
|
||||
|
||||
mov [I.Arg1.Type],ah
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
jmp SetVT3
|
||||
;-----------------------------------------------------------------------------
|
||||
T621D:
|
||||
cmp [I.Mod],3
|
||||
jnz ErrorDec
|
||||
mov ah,KXXRG
|
||||
jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T621E:
|
||||
cmp [I.Mod],3
|
||||
jnz ErrorDec
|
||||
T621F:
|
||||
mov al,KXXRG
|
||||
jmp T6204
|
||||
;-----------------------------------------------------------------------------
|
||||
T6224:
|
||||
mov [I.RandSize],xO
|
||||
mov ah,XMMRG
|
||||
jmp T6225.L0
|
||||
;-----------------------------------------------------------------------------
|
||||
T6225:
|
||||
mov [I.RandSize],xY
|
||||
mov ah,YMMRG
|
||||
.L0: jmp T6201
|
||||
;-----------------------------------------------------------------------------
|
975
programs/develop/koldbg/disasm/rtn-c4c5.inc
Normal file
975
programs/develop/koldbg/disasm/rtn-c4c5.inc
Normal file
@@ -0,0 +1,975 @@
|
||||
r8d equ edi
|
||||
r8 equ rdi
|
||||
;-----------------------------------------------------------------------------
|
||||
R32RM32C5:
|
||||
mov eax,R32RM32
|
||||
jmp R16RM16C5.1
|
||||
R16RM16C5:
|
||||
mov eax,R16RM16
|
||||
.1: cmp byte [rsi],0xC0
|
||||
jae RtnAVX2C5
|
||||
or byte [I.Flags],_O
|
||||
and byte [I.Prefixes],not (bit P66)
|
||||
jmp rax
|
||||
|
||||
RtnAVX2C5:
|
||||
;F0/66/F2/F3/REX then #UD
|
||||
test byte [I.Prefixes],bit PF0+bit P66+bit PF2+bit PF3+bit P4X
|
||||
jnz ErrorDec
|
||||
|
||||
FetchB
|
||||
mov [I.VEX],al
|
||||
and [I.VEX],7Fh ;clear VEX.R
|
||||
|
||||
mov ah,al
|
||||
and al,10000000b
|
||||
xor al,10000000b
|
||||
shr al,5 ;REX.R
|
||||
jz .L1
|
||||
|
||||
cmp [IgnoreInvalid],True
|
||||
je .L1
|
||||
cmp [I.Arch],CPUX64
|
||||
jne ErrorDec
|
||||
.L1:
|
||||
mov [I.PreREX],al
|
||||
call SetMagicBytes
|
||||
|
||||
mov [I.P],1
|
||||
|
||||
mov al,ah
|
||||
and al,01111000b ;vvvv
|
||||
xor al,01111000b
|
||||
shr al,3
|
||||
|
||||
cmp [IgnoreInvalid],True
|
||||
je .L2
|
||||
cmp al,7
|
||||
jbe .L2
|
||||
cmp [I.Arch],CPUX64
|
||||
jne ErrorDec
|
||||
.L2:
|
||||
mov [I.VVVV],al
|
||||
mov al,ah
|
||||
and eax,11b ;pp
|
||||
;mov [PP],al
|
||||
mov edx,[rax*4+C4C5Tab]
|
||||
mov edi,[rax*3+CMPSuffixesX]
|
||||
jmp C4C5XX
|
||||
;-----------------------------------------------------------------------------
|
||||
R32RM32C4:
|
||||
mov eax,R32RM32
|
||||
jmp R16RM16C4.1
|
||||
R16RM16C4:
|
||||
mov eax,R16RM16
|
||||
.1: cmp byte [rsi],0xC0
|
||||
jae RtnAVX2C4
|
||||
or byte [I.Flags],_O
|
||||
and byte [I.Prefixes],not (bit P66)
|
||||
jmp rax
|
||||
RtnAVX2C4:
|
||||
mov [I.RandSize],0
|
||||
;F0/66/F2/F3/REX then #UD
|
||||
test byte [I.Prefixes],bit PF0+bit P66+bit PF2+bit PF3+bit P4X
|
||||
jnz ErrorDec
|
||||
|
||||
FetchB
|
||||
mov ah,al
|
||||
;and al,11100000b
|
||||
xor al,11100000b
|
||||
shr al,5 ;REX.RXB
|
||||
jz .L1
|
||||
|
||||
cmp [IgnoreInvalid],True
|
||||
je .L1
|
||||
cmp [I.Arch],CPUX64
|
||||
jne ErrorDec
|
||||
.L1:
|
||||
mov [I.PreREX],al
|
||||
call SetMagicBytes
|
||||
|
||||
mov [I.P],1
|
||||
|
||||
mov al,ah
|
||||
and al,11111b
|
||||
mov [I.MMMMM],al ;mmmmm
|
||||
|
||||
FetchB
|
||||
mov ah,al
|
||||
mov [I.VEX],al
|
||||
and al,01111000b ;vvvv
|
||||
xor al,01111000b
|
||||
shr al,3
|
||||
|
||||
cmp [IgnoreInvalid],True
|
||||
je .L2
|
||||
cmp al,7
|
||||
jbe .L2
|
||||
cmp [I.Arch],CPUX64
|
||||
jne ErrorDec
|
||||
.L2:
|
||||
mov [I.VVVV],al
|
||||
mov al,ah
|
||||
and eax,11b ;pp
|
||||
;mov [PP],al
|
||||
|
||||
mov edx,[rax*4+C4C5Tab]
|
||||
mov ebx,[rax*4+C438Tab]
|
||||
mov ecx,[rax*4+C43ATab]
|
||||
mov edi,[rax*3+CMPSuffixesX]
|
||||
|
||||
mov al,[I.MMMMM]
|
||||
or al,al
|
||||
jz ErrorDec
|
||||
cmp al,00011b
|
||||
ja ErrorDec
|
||||
;cmp al,00011b
|
||||
jne .L3
|
||||
mov edx,ecx
|
||||
.L3:
|
||||
cmp al,00010b
|
||||
jne .L4
|
||||
mov edx,ebx
|
||||
.L4:
|
||||
|
||||
C4C5XX:
|
||||
mov word [I.Suffix3rd],di
|
||||
FetchB
|
||||
mov [I.AfterVEX],al
|
||||
|
||||
mov [I.SaveRSI],rsi
|
||||
.L1:
|
||||
cmp dword [rdx],-1
|
||||
jz ErrorDec
|
||||
cmp al,[rdx+CXX.Imm]
|
||||
jz .L2
|
||||
add edx,CXX.Size
|
||||
jmp .L1
|
||||
.L2:
|
||||
mov eax,dword [rdx+CXX.Flags]
|
||||
mov word [I.FlagsVEX],ax
|
||||
|
||||
mov cl,VEXL
|
||||
|
||||
and al,cl
|
||||
mov ah,[I.VEX]
|
||||
and ah,al
|
||||
jnz ErrorDec
|
||||
|
||||
test [I.FlagsVEX],VEXN
|
||||
jz .L3
|
||||
mov ah,[I.VEX]
|
||||
and ah,cl
|
||||
jz ErrorDec
|
||||
.L3:
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
test [I.FlagsVEX+1],VEXG shr 8
|
||||
jz .L4
|
||||
xor cl,cl
|
||||
cmp [I.Arch],CPUX64
|
||||
jne .L4
|
||||
mov cl,VEXW
|
||||
.L4:
|
||||
mov al,[rdx+CXX.MOS]
|
||||
test [I.VEX],cl
|
||||
jz .L5
|
||||
shr al,4
|
||||
.L5: and al,0Fh
|
||||
mov [I.RandSize],al
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
mov al,byte [rdx+CXX.Flags]
|
||||
and al,VEXW
|
||||
mov ah,[I.VEX]
|
||||
|
||||
cmp [I.Arch],CPUX64
|
||||
je .L6
|
||||
test [I.FlagsVEX+1],VEXC shr 8
|
||||
jnz .L6
|
||||
test ah,VEXW
|
||||
jnz ErrorDec
|
||||
.L6:
|
||||
and ah,al
|
||||
jnz ErrorDec
|
||||
|
||||
mov al,byte [rdx+CXX.Flags]
|
||||
and al,VEXV
|
||||
jz .L7
|
||||
cmp [I.VVVV],0 ;!1111b=0000b
|
||||
jnz ErrorDec
|
||||
.L7:
|
||||
movzx r8d,[rdx+CXX.Rtn]
|
||||
add r8d,RtnXX
|
||||
|
||||
mov edx,dword [rdx+CXX.Name]
|
||||
test [I.FlagsVEX+1],VEXH shr 8
|
||||
jnz .L8
|
||||
mov [I.Prefix],'v'
|
||||
.L8: mov [I.Name],dx
|
||||
|
||||
test [I.FlagsVEX+1],VEXF shr 8
|
||||
jnz .L9
|
||||
call FetchModRM
|
||||
.L9:
|
||||
test [I.FlagsVEX+1],VEXR shr 8
|
||||
jz .LA
|
||||
cmp [I.Mod],3
|
||||
jnz ErrorDec
|
||||
.LA:
|
||||
cmp [I.Mod],3
|
||||
jnz .LB
|
||||
test [I.FlagsVEX],VEXM
|
||||
jnz ErrorDec
|
||||
.LB: jmp r8
|
||||
|
||||
RtnC4C5:
|
||||
lea r8,[I.Arg1]
|
||||
|
||||
mov al,XMMRG
|
||||
test [I.VEX],VEXL
|
||||
jz .L1
|
||||
mov al,YMMRG
|
||||
.L1: mov ah,al
|
||||
|
||||
test [I.FlagsVEX+1],VEX2 shr 8
|
||||
jz .L2
|
||||
mov ah,XMMRG
|
||||
.L2:
|
||||
test [I.FlagsVEX+1],VEX1 shr 8
|
||||
jz .L3
|
||||
mov al,XMMRG
|
||||
.L3:
|
||||
test [I.FlagsVEX+1],VEXG shr 8
|
||||
jz .L4
|
||||
mov ax,GPR32 by GPR32
|
||||
cmp [I.Arch],CPUX64
|
||||
jne .L4
|
||||
test [I.VEX],VEXW
|
||||
jz .L4
|
||||
mov ax,GPR64 by GPR64
|
||||
.L4:
|
||||
push rax
|
||||
test [I.FlagsVEX+1],VEXS shr 8
|
||||
jnz .NDD
|
||||
mov [r8+TArg.Type],al
|
||||
mov [r8+TArg.Type2nd],InReg
|
||||
add r8d,sizeof.TArg
|
||||
.NDD:
|
||||
mov al,XMMRG
|
||||
test [I.VEX],VEXL
|
||||
jz .L5
|
||||
mov al,YMMRG
|
||||
.L5:
|
||||
test [I.FlagsVEX+1],VEXG shr 8
|
||||
jz .L6
|
||||
mov al,GPR32
|
||||
cmp [I.Arch],CPUX64
|
||||
jne .L6
|
||||
test [I.VEX],VEXW
|
||||
jz .L6
|
||||
mov al,GPR64
|
||||
.L6:
|
||||
test [I.FlagsVEX],VEXV
|
||||
jnz .L7
|
||||
mov [r8+TArg.Type],al
|
||||
mov [r8+TArg.Type2nd],InVVVV
|
||||
add r8d,sizeof.TArg
|
||||
.L7: pop rax
|
||||
|
||||
;cmp [I.Mod],3
|
||||
;setnz [r8+TArg.Mem]
|
||||
mov dl,ah
|
||||
mov [r8+TArg.Type],dl
|
||||
mov [r8+TArg.Type2nd],InRM
|
||||
add r8d,sizeof.TArg
|
||||
|
||||
test [I.FlagsVEX],VEXI
|
||||
jnz .Imm
|
||||
|
||||
test [I.FlagsVEX],VEX8
|
||||
jz .L8
|
||||
movzx eax,byte [rsi]
|
||||
cmp al,1Fh
|
||||
ja .Imm
|
||||
FetchB
|
||||
|
||||
cmp [I.AfterVEX],0xC2
|
||||
jne .L8
|
||||
mov edx,[rax*2+CMPxxNames]
|
||||
mov [I.Name],dx
|
||||
mov eax,dword [I.Suffix3rd]
|
||||
mov dword [I.Suffix2nd],eax
|
||||
ret
|
||||
|
||||
.Imm: FetchB
|
||||
mov [r8+TArg.Type],80h+1
|
||||
mov [r8+TArg.ImmB],al
|
||||
ret
|
||||
.L8:
|
||||
test [I.FlagsVEX],VEX4
|
||||
jnz .L9
|
||||
ret
|
||||
.L9:
|
||||
FetchB
|
||||
shr al,4
|
||||
|
||||
cmp [IgnoreInvalid],True
|
||||
je .LA
|
||||
cmp [I.Arch],CPUX64
|
||||
je .LA
|
||||
and al,111b
|
||||
.LA: mov [r8+TArg.Reg],al
|
||||
mov [r8+TArg.Type],XMMRG
|
||||
test [I.VEX],VEXL
|
||||
jz .LB
|
||||
mov [r8+TArg.Type],YMMRG
|
||||
.LB: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC401:
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg2.Mem]
|
||||
mov [I.Arg2.Type],XMMRG
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
|
||||
mov [I.Arg1.Type],XMMRG
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
|
||||
test [I.VEX],VEXL
|
||||
jz .L1
|
||||
mov [I.Arg1.Type],YMMRG
|
||||
.L1: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC404:test [I.VEX],VEXW
|
||||
jz .L1
|
||||
mov [I.LastByte],'q'
|
||||
.L1: ;jmp RtnC402
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC402:mov al,XMMRG
|
||||
test [I.VEX],VEXL
|
||||
jz .L1
|
||||
mov al,YMMRG
|
||||
.L1:
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg1.Mem]
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
mov [I.Arg3.Type],al
|
||||
mov [I.Arg3.Type2nd],InReg
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC403:test [I.VEX],VEXW
|
||||
jz .L1
|
||||
mov [I.LastByte],'q'
|
||||
.L1: jmp RtnC4C5
|
||||
;-----------------------------------------------------------------------------
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC405:test [I.VEX],VEXW
|
||||
jz .L1
|
||||
mov [I.LastByte],'q'
|
||||
.L1: ;jmp RtnC4VT
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4VT:mov al,XMMRG
|
||||
test [I.VEX],VEXL
|
||||
jz .L1
|
||||
mov al,YMMRG
|
||||
.L1: call SetVT
|
||||
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg2.Mem]
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg3.Type],al
|
||||
mov [I.Arg3.Type2nd],InVVVV
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC406:call RtnC4VT
|
||||
mov ax,'ps'
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
mov ah,'d' ;'pd'
|
||||
.L1: mov word [I.Suffix2nd],ax
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC407:call RtnC4C5
|
||||
mov ax,'ps'
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
mov ah,'d' ;'pd'
|
||||
.L1: mov word [I.Suffix2nd],ax
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC408:test [I.VEX],VEXW
|
||||
jz .L1
|
||||
mov [I.RandSize],xQ
|
||||
.L1: call RtnC4C5
|
||||
mov ax,'ss'
|
||||
test [I.VEX],VEXW
|
||||
jz .L2
|
||||
mov ah,'d' ;'sd'
|
||||
.L2: mov word [I.Suffix2nd],ax
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC409:
|
||||
mov al,GPR32
|
||||
cmp [I.Arch],CPUX64
|
||||
jne .L1
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
mov al,GPR64
|
||||
.L1:
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg2.Mem]
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
mov [I.Arg3.Type],al
|
||||
mov [I.Arg3.Type2nd],InVVVV
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC40A:
|
||||
test [I.VEX],VEXW
|
||||
jz .L0
|
||||
mov [I.LastByte],'w'
|
||||
.L0:
|
||||
mov al,KXXRG
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
FetchB
|
||||
mov [I.Arg3.Type],80h+1
|
||||
mov [I.Arg3.ImmB],al
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC40B:
|
||||
test [I.VEX],VEXW
|
||||
jz .L0
|
||||
mov [I.LastByte],'q'
|
||||
.L0: jmp RtnC40A.L0
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC40C:
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg1.Mem]
|
||||
mov [I.Arg1.Type],XMMRG
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
|
||||
mov [I.Arg2.Type],YMMRG
|
||||
mov [I.Arg2.Type2nd],InReg
|
||||
.L1:
|
||||
FetchB
|
||||
mov [I.Arg3.Type],80h+1
|
||||
mov [I.Arg3.ImmB],al
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC40D:
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg1.Mem]
|
||||
mov [I.Arg1.Type],XMMRG
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
|
||||
mov al,XMMRG
|
||||
test [I.XOP],XOPL
|
||||
jz .L1
|
||||
mov al,YMMRG
|
||||
.L1:
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg2.Type2nd],InReg
|
||||
jmp RtnC40C.L1
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC40F:
|
||||
mov al,GPR64
|
||||
cmp [I.Arch],CPUX64
|
||||
jne RtnC40E.L1
|
||||
test [I.VEX],VEXW
|
||||
jnz RtnC40E.L2
|
||||
RtnC40E:
|
||||
.L1: mov al,GPR32
|
||||
.L2:
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
mov [I.Arg2.Type],XMMRG
|
||||
mov [I.Arg2.Type2nd],InReg
|
||||
jmp RtnC40C.L1
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC410:
|
||||
mov [I.Arg1.Type],YMMRG
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type],YMMRG
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg3.Mem]
|
||||
mov [I.Arg3.Type],XMMRG
|
||||
mov [I.Arg3.Type2nd],InRM
|
||||
FetchB
|
||||
mov [I.Arg4.Type],80h+1
|
||||
mov [I.Arg4.ImmB],al
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnCLMUL:
|
||||
call RtnC4C5
|
||||
movzx eax,byte [rsi-1]
|
||||
cmp al,18
|
||||
ja .L1
|
||||
mov edx,[rax*2+TabCLMUL]
|
||||
or dx,dx
|
||||
jz .L1
|
||||
mov [I.Name],dx
|
||||
mov [I.Arg4.Type],0 ;Delete
|
||||
.L1: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
C40F3A48:
|
||||
mov ebx,TPERMIL2PSX
|
||||
jmp C40F3A49.L1
|
||||
;-----------------------------------------------------------------------------
|
||||
C40F3A49:
|
||||
mov ebx,TPERMIL2PDX
|
||||
.L1:
|
||||
mov al,XMMRG
|
||||
test [I.VEX],VEXL
|
||||
jz .L2
|
||||
mov al,YMMRG
|
||||
.L2:
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
mov [I.Arg3.Type],al
|
||||
mov [I.Arg4.Type],al
|
||||
FetchB
|
||||
mov dl,al
|
||||
shr dl,4
|
||||
|
||||
cmp [IgnoreInvalid],True
|
||||
je .L3
|
||||
cmp [I.Arch],CPUX64
|
||||
je .L3
|
||||
and dl,111b
|
||||
.L3:
|
||||
lea r8,[I.Arg3]
|
||||
test [I.VEX],VEXW
|
||||
jnz .L7
|
||||
lea r8,[I.Arg4]
|
||||
.L7: mov [r8+TArg.Reg],dl
|
||||
|
||||
and eax,1111b
|
||||
|
||||
cmp al,0011b
|
||||
ja .L4
|
||||
mov edx,[rax*2+rbx]
|
||||
mov [I.Name],dx
|
||||
jmp .L5
|
||||
.L4:
|
||||
mov [I.Arg5.Type],80h+1
|
||||
mov [I.Arg5.ImmB],al
|
||||
.L5:
|
||||
lea r8,[I.Arg4]
|
||||
test [I.VEX],VEXW
|
||||
jnz .L6
|
||||
lea r8,[I.Arg3]
|
||||
.L6:
|
||||
mov [r8+TArg.Type2nd],InRM
|
||||
;cmp [I.Mod],3
|
||||
;setnz [r8+TArg.Mem]
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC411:
|
||||
call RM32R32M
|
||||
mov [I.Arg2.Type],XMMRG
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
cmp [I.Arch],CPUX64
|
||||
jnz ErrorDec
|
||||
mov [I.Arg1.Type],GPR64
|
||||
mov [I.RandSize],VQWORD+80h
|
||||
mov [I.LastByte],'q'
|
||||
.L1: jmp RtnC40C.L1
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC413:
|
||||
push RtnPINSR?
|
||||
RtnC412:
|
||||
mov [I.Arg1.Type],XMMRG
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type],XMMRG
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg3.Mem]
|
||||
mov [I.Arg3.Type],GPR32
|
||||
mov [I.Arg3.Type2nd],InRM
|
||||
FetchB
|
||||
mov [I.Arg4.Type],80h+1
|
||||
mov [I.Arg4.ImmB],al
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC414:
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg1.Mem]
|
||||
mov [I.Arg2.Type],YMMRG
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
|
||||
mov [I.Arg1.Type],YMMRG
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
jmp RtnC40C.L1
|
||||
;-----------------------------------------------------------------------------
|
||||
C4FMA: mov al,XMMRG
|
||||
test [I.VEX],VEXL
|
||||
jz .L1
|
||||
mov al,YMMRG
|
||||
.L1:
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg3.Type],al
|
||||
mov [I.Arg4.Type],al
|
||||
FetchB
|
||||
shr al,4
|
||||
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
|
||||
lea r8,[I.Arg3]
|
||||
test [I.VEX],VEXW
|
||||
jnz .L2
|
||||
lea r8,[I.Arg4]
|
||||
.L2:
|
||||
mov [r8+TArg.Reg],al
|
||||
|
||||
lea r8,[I.Arg4]
|
||||
test [I.VEX],VEXW
|
||||
jnz .L3
|
||||
lea r8,[I.Arg3]
|
||||
.L3:
|
||||
;cmp [I.Mod],3
|
||||
;setnz [r8+TArg.Mem]
|
||||
mov [r8+TArg.Type2nd],InRM
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC415:
|
||||
movzx eax,[I.Reg]
|
||||
mov edx,[rax*2+BMI1]
|
||||
or dx,dx
|
||||
jz ErrorDec
|
||||
mov [I.Name],dx
|
||||
mov [I.Prefix],0
|
||||
|
||||
mov al,GPR32
|
||||
cmp [I.Arch],CPUX64
|
||||
jne .L1
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
mov al,GPR64
|
||||
.L1:
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg1.Type],al
|
||||
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg2.Mem]
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
mov [I.Arg1.Type2nd],InVVVV
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC416:
|
||||
call R32RM32M
|
||||
|
||||
cmp [I.Arch],CPUX64
|
||||
jne .L1
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
mov [I.Arg1.Type],GPR64
|
||||
mov [I.Arg2.Type],GPR64
|
||||
.L1: jmp RtnC40C.L1
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C508:
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
mov [I.Name],TKUNPCKDQ
|
||||
.L1: jmp RtnC4C502.L0
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C501:
|
||||
test [I.VEX],VEXW
|
||||
jz .L0
|
||||
mov [I.LastByte],'q'
|
||||
.L0: jmp RtnC4C502.L0
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C502:
|
||||
test [I.VEX],VEXW
|
||||
jz .L0
|
||||
mov [I.LastByte],'d'
|
||||
.L0: ;
|
||||
cmp [I.Mod],3
|
||||
jnz ErrorDec
|
||||
;
|
||||
mov al,KXXRG
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg3.Type],al
|
||||
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg3.Mem]
|
||||
mov [I.Arg3.Type2nd],InRM
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C503:
|
||||
test [I.VEX],VEXW
|
||||
jz .L0
|
||||
mov [I.LastByte],'d'
|
||||
.L0: jmp RtnC4C505.L0
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C504:
|
||||
cmp [I.Mod],3
|
||||
jnz ErrorDec
|
||||
RtnC4C505:
|
||||
test [I.VEX],VEXW
|
||||
jz .L0
|
||||
mov [I.LastByte],'q'
|
||||
.L0:
|
||||
mov al,KXXRG
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],al
|
||||
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg2.Mem]
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C506:
|
||||
cmp [I.Mod],3
|
||||
jz ErrorDec
|
||||
test [I.VEX],VEXW
|
||||
jz .L0
|
||||
mov [I.LastByte],'d'
|
||||
.L0:
|
||||
mov al,KXXRG
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],al
|
||||
|
||||
mov [I.Arg2.Type2nd],InReg
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg1.Mem]
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C507:
|
||||
cmp [I.Mod],3
|
||||
jz ErrorDec
|
||||
test [I.VEX],VEXW
|
||||
jz .L0
|
||||
mov [I.LastByte],'q'
|
||||
.L0:
|
||||
jmp RtnC4C506.L0
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C509:
|
||||
cmp [I.Mod],3
|
||||
jnz ErrorDec
|
||||
mov al,GPR32
|
||||
test [I.VEX],VEXW
|
||||
jz .L0
|
||||
mov [I.LastByte],'q'
|
||||
mov al,GPR64
|
||||
.L0:
|
||||
mov [I.Arg1.Type],KXXRG
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C50A:
|
||||
cmp [I.Mod],3
|
||||
jnz ErrorDec
|
||||
mov al,GPR32
|
||||
test [I.VEX],VEXW
|
||||
jz .L0
|
||||
mov [I.LastByte],'q'
|
||||
mov al,GPR64
|
||||
.L0:
|
||||
mov [I.Arg2.Type],KXXRG
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg1.Type],al
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C50B:
|
||||
cmp [I.Reg],2 ;/2
|
||||
jb ErrorDec
|
||||
cmp [I.Reg],3 ;/3
|
||||
ja ErrorDec
|
||||
jne .L1
|
||||
mov [I.Name],TSTMXCSR
|
||||
.L1:
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg1.Mem]
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
mov [I.Arg1.Type],GPR32
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C50C:
|
||||
mov al,XMMRG
|
||||
test [I.VEX],VEXL
|
||||
jz .L1
|
||||
mov al,YMMRG
|
||||
.L1:
|
||||
;cmp [I.Mod],3
|
||||
;setnz [I.Arg1.Mem]
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
mov [I.Arg2.Type2nd],InReg
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],al
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
C4C5NB2:
|
||||
mov dx,TMOVLHPS
|
||||
jmp C4C5NB1.L1
|
||||
;-----------------------------------------------------------------------------
|
||||
C4C5NB1:mov dx,TMOVHLPS
|
||||
.L1: cmp [I.Mod],3
|
||||
jne .L2
|
||||
mov [I.Name],dx
|
||||
.L2: jmp RtnC4C5
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C50D:
|
||||
mov ah,XMMRG
|
||||
test [I.VEX],VEXL
|
||||
jz .L1
|
||||
mov ah,YMMRG
|
||||
.L1:
|
||||
mov al,GPR32
|
||||
cmp [I.Arch],CPUX64
|
||||
jnz .L2
|
||||
mov al,GPR64
|
||||
.L2:
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],ah
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C50E:
|
||||
test [I.VEX],VEXL
|
||||
jnz .L1
|
||||
mov [I.Name],TZEROUPPER
|
||||
.L1: ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C5XRM:
|
||||
mov al,XMMRG
|
||||
mov ah,GPR32
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
cmp [I.Arch],CPUX64
|
||||
jnz ErrorDec
|
||||
mov [I.LastByte],'q'
|
||||
mov ah,GPR64
|
||||
.L1:
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],ah
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C5RMX:
|
||||
mov al,XMMRG
|
||||
mov ah,GPR32
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
cmp [I.Arch],CPUX64
|
||||
jnz ErrorDec
|
||||
mov [I.LastByte],'q'
|
||||
mov ah,GPR64
|
||||
.L1:
|
||||
mov [I.Arg2.Type2nd],InReg
|
||||
mov [I.Arg1.Type2nd],InRM
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg1.Type],ah
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C50F:
|
||||
mov al,GPR64
|
||||
cmp [I.Arch],CPUX64
|
||||
jz .L1
|
||||
mov al,GPR32
|
||||
.L1:
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg2.Type],XMMRG
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
jmp RtnC40C.L1
|
||||
;-----------------------------------------------------------------------------
|
||||
C4C50F71:
|
||||
mov edx,T0F71Names
|
||||
jmp C4C5NDSX
|
||||
;-----------------------------------------------------------------------------
|
||||
C4C50F72:
|
||||
mov edx,T0F72Names
|
||||
jmp C4C5NDSX
|
||||
;-----------------------------------------------------------------------------
|
||||
C4C50F73:
|
||||
mov edx,T0F73Names
|
||||
C4C5NDSX:
|
||||
movzx eax,[I.Reg]
|
||||
mov edx,[rdx+rax*2]
|
||||
or dx,dx
|
||||
jz ErrorDec
|
||||
mov [I.Name],dx
|
||||
jmp RtnC4C5
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C510:
|
||||
mov al,YMMRG
|
||||
test [I.VEX],VEXL
|
||||
jnz .L1
|
||||
mov al,XMMRG
|
||||
.L1:
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type],al
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
mov [I.Arg3.Type],XMMRG
|
||||
mov [I.Arg3.Type2nd],InRM
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C511:
|
||||
mov al,GPR32
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
cmp [I.Arch],CPUX64
|
||||
jnz ErrorDec
|
||||
mov al,GPR64
|
||||
.L1:
|
||||
mov [I.Arg1.Type],al
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type],XMMRG
|
||||
mov [I.Arg2.Type2nd],InRM
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
RtnC4C512:
|
||||
mov al,GPR32
|
||||
test [I.VEX],VEXW
|
||||
jz .L1
|
||||
cmp [I.Arch],CPUX64
|
||||
jnz ErrorDec
|
||||
mov [I.RandSize],VQWORD
|
||||
mov al,GPR64
|
||||
.L1:
|
||||
mov [I.Arg1.Type],XMMRG
|
||||
mov [I.Arg1.Type2nd],InReg
|
||||
mov [I.Arg2.Type],XMMRG
|
||||
mov [I.Arg2.Type2nd],InVVVV
|
||||
mov [I.Arg3.Type],al
|
||||
mov [I.Arg3.Type2nd],InRM
|
||||
ret
|
||||
;-----------------------------------------------------------------------------
|
||||
C4C5MXJ:cmp [I.Mod],3
|
||||
jz RtnC4C5
|
||||
cmp [I.VVVV],0 ;!1111b=0000b
|
||||
jnz ErrorDec
|
||||
jmp RtnC4C50C
|
||||
;-----------------------------------------------------------------------------
|
||||
C4C5XMJ:cmp [I.Mod],3
|
||||
jz .L1
|
||||
or [I.FlagsVEX],VEXV
|
||||
cmp [I.VVVV],0 ;!1111b=0000b
|
||||
jnz ErrorDec
|
||||
.L1: jmp RtnC4C5
|
50
programs/develop/koldbg/disasm/scanitem.inc
Normal file
50
programs/develop/koldbg/disasm/scanitem.inc
Normal file
@@ -0,0 +1,50 @@
|
||||
|
||||
CntItems = 0
|
||||
|
||||
ScanItems = 1 ;must be >0, temporary equal 0
|
||||
|
||||
EleSize = 6 ;xxh.Size
|
||||
|
||||
virtual at 0
|
||||
Vals::
|
||||
rb 64*1024
|
||||
end virtual
|
||||
|
||||
macro AddElement Source
|
||||
{
|
||||
local A,B,C,Index,Found
|
||||
C = 0
|
||||
Index = 0
|
||||
Found = 0
|
||||
if ScanItems
|
||||
repeat CntItems
|
||||
Found = 0
|
||||
load B fword from Vals:+(%-1)*EleSize+C
|
||||
load A fword from Source+C
|
||||
if A=B
|
||||
Found = %
|
||||
Break
|
||||
else
|
||||
Found = 0
|
||||
end if
|
||||
end repeat
|
||||
end if
|
||||
if ~Found
|
||||
load A fword from Source+C
|
||||
store fword A at Vals:+CntItems*EleSize+C
|
||||
dw (CntItems)*EleSize
|
||||
CntItems = CntItems+1
|
||||
else
|
||||
dw (Found-1)*EleSize
|
||||
end if
|
||||
}
|
||||
|
||||
macro CpyElements Dst
|
||||
{
|
||||
local A
|
||||
Dst rb CntItems*EleSize
|
||||
repeat CntItems
|
||||
load A fword from Vals:(%-1)*EleSize
|
||||
store fword A at Dst+(%-1)*EleSize
|
||||
end repeat
|
||||
}
|
2375
programs/develop/koldbg/disasm/selbat.inc
Normal file
2375
programs/develop/koldbg/disasm/selbat.inc
Normal file
File diff suppressed because it is too large
Load Diff
1800
programs/develop/koldbg/disasm/tables.inc
Normal file
1800
programs/develop/koldbg/disasm/tables.inc
Normal file
File diff suppressed because it is too large
Load Diff
2240
programs/develop/koldbg/fasm/assemble.inc
Normal file
2240
programs/develop/koldbg/fasm/assemble.inc
Normal file
File diff suppressed because it is too large
Load Diff
3425
programs/develop/koldbg/fasm/avx.inc
Normal file
3425
programs/develop/koldbg/fasm/avx.inc
Normal file
File diff suppressed because it is too large
Load Diff
194
programs/develop/koldbg/fasm/errors.inc
Normal file
194
programs/develop/koldbg/fasm/errors.inc
Normal file
@@ -0,0 +1,194 @@
|
||||
|
||||
; flat assembler core
|
||||
; Copyright (c) 1999-2019, Tomasz Grysztar.
|
||||
; All rights reserved.
|
||||
|
||||
out_of_memory:
|
||||
push _out_of_memory
|
||||
jmp fatal_error
|
||||
stack_overflow:
|
||||
push _stack_overflow
|
||||
jmp fatal_error
|
||||
main_file_not_found:
|
||||
push _main_file_not_found
|
||||
jmp fatal_error
|
||||
write_failed:
|
||||
push _write_failed
|
||||
jmp fatal_error
|
||||
|
||||
unexpected_end_of_file:
|
||||
push _unexpected_end_of_file
|
||||
jmp general_error
|
||||
code_cannot_be_generated:
|
||||
push _code_cannot_be_generated
|
||||
jmp general_error
|
||||
format_limitations_exceeded:
|
||||
push _format_limitations_exceeded
|
||||
jmp general_error
|
||||
invalid_definition:
|
||||
push _invalid_definition
|
||||
general_error:
|
||||
cmp [symbols_file],0
|
||||
je fatal_error
|
||||
call dump_preprocessed_source
|
||||
jmp fatal_error
|
||||
|
||||
file_not_found:
|
||||
push _file_not_found
|
||||
jmp error_with_source
|
||||
error_reading_file:
|
||||
push _error_reading_file
|
||||
jmp error_with_source
|
||||
invalid_file_format:
|
||||
push _invalid_file_format
|
||||
jmp error_with_source
|
||||
invalid_macro_arguments:
|
||||
push _invalid_macro_arguments
|
||||
jmp error_with_source
|
||||
incomplete_macro:
|
||||
push _incomplete_macro
|
||||
jmp error_with_source
|
||||
unexpected_characters:
|
||||
push _unexpected_characters
|
||||
jmp error_with_source
|
||||
invalid_argument:
|
||||
push _invalid_argument
|
||||
jmp error_with_source
|
||||
illegal_instruction:
|
||||
push _illegal_instruction
|
||||
jmp error_with_source
|
||||
invalid_operand:
|
||||
push _invalid_operand
|
||||
jmp error_with_source
|
||||
invalid_operand_size:
|
||||
push _invalid_operand_size
|
||||
jmp error_with_source
|
||||
operand_size_not_specified:
|
||||
push _operand_size_not_specified
|
||||
jmp error_with_source
|
||||
operand_sizes_do_not_match:
|
||||
push _operand_sizes_do_not_match
|
||||
jmp error_with_source
|
||||
invalid_address_size:
|
||||
push _invalid_address_size
|
||||
jmp error_with_source
|
||||
address_sizes_do_not_agree:
|
||||
push _address_sizes_do_not_agree
|
||||
jmp error_with_source
|
||||
disallowed_combination_of_registers:
|
||||
push _disallowed_combination_of_registers
|
||||
jmp error_with_source
|
||||
long_immediate_not_encodable:
|
||||
push _long_immediate_not_encodable
|
||||
jmp error_with_source
|
||||
relative_jump_out_of_range:
|
||||
push _relative_jump_out_of_range
|
||||
jmp error_with_source
|
||||
invalid_expression:
|
||||
push _invalid_expression
|
||||
jmp error_with_source
|
||||
invalid_address:
|
||||
push _invalid_address
|
||||
jmp error_with_source
|
||||
invalid_value:
|
||||
push _invalid_value
|
||||
jmp error_with_source
|
||||
value_out_of_range:
|
||||
push _value_out_of_range
|
||||
jmp error_with_source
|
||||
undefined_symbol:
|
||||
mov edi,message
|
||||
mov esi,_undefined_symbol
|
||||
call copy_asciiz
|
||||
push message
|
||||
cmp [error_info],0
|
||||
je error_with_source
|
||||
mov esi,[error_info]
|
||||
mov esi,[esi+24]
|
||||
or esi,esi
|
||||
jz error_with_source
|
||||
mov byte [edi-1],20h
|
||||
call write_quoted_symbol_name
|
||||
jmp error_with_source
|
||||
copy_asciiz:
|
||||
lods byte [esi]
|
||||
stos byte [edi]
|
||||
test al,al
|
||||
jnz copy_asciiz
|
||||
ret
|
||||
write_quoted_symbol_name:
|
||||
mov al,27h
|
||||
stosb
|
||||
movzx ecx,byte [esi-1]
|
||||
rep movs byte [edi],[esi]
|
||||
mov ax,27h
|
||||
stosw
|
||||
ret
|
||||
symbol_out_of_scope:
|
||||
mov edi,message
|
||||
mov esi,_symbol_out_of_scope_1
|
||||
call copy_asciiz
|
||||
cmp [error_info],0
|
||||
je finish_symbol_out_of_scope_message
|
||||
mov esi,[error_info]
|
||||
mov esi,[esi+24]
|
||||
or esi,esi
|
||||
jz finish_symbol_out_of_scope_message
|
||||
mov byte [edi-1],20h
|
||||
call write_quoted_symbol_name
|
||||
finish_symbol_out_of_scope_message:
|
||||
mov byte [edi-1],20h
|
||||
mov esi,_symbol_out_of_scope_2
|
||||
call copy_asciiz
|
||||
push message
|
||||
jmp error_with_source
|
||||
invalid_use_of_symbol:
|
||||
push _invalid_use_of_symbol
|
||||
jmp error_with_source
|
||||
name_too_long:
|
||||
push _name_too_long
|
||||
jmp error_with_source
|
||||
invalid_name:
|
||||
push _invalid_name
|
||||
jmp error_with_source
|
||||
reserved_word_used_as_symbol:
|
||||
push _reserved_word_used_as_symbol
|
||||
jmp error_with_source
|
||||
symbol_already_defined:
|
||||
push _symbol_already_defined
|
||||
jmp error_with_source
|
||||
missing_end_quote:
|
||||
push _missing_end_quote
|
||||
jmp error_with_source
|
||||
missing_end_directive:
|
||||
push _missing_end_directive
|
||||
jmp error_with_source
|
||||
unexpected_instruction:
|
||||
push _unexpected_instruction
|
||||
jmp error_with_source
|
||||
extra_characters_on_line:
|
||||
push _extra_characters_on_line
|
||||
jmp error_with_source
|
||||
section_not_aligned_enough:
|
||||
push _section_not_aligned_enough
|
||||
jmp error_with_source
|
||||
setting_already_specified:
|
||||
push _setting_already_specified
|
||||
jmp error_with_source
|
||||
data_already_defined:
|
||||
push _data_already_defined
|
||||
jmp error_with_source
|
||||
too_many_repeats:
|
||||
push _too_many_repeats
|
||||
jmp error_with_source
|
||||
assertion_failed:
|
||||
push _assertion_failed
|
||||
jmp error_with_source
|
||||
invoked_error:
|
||||
push _invoked_error
|
||||
error_with_source:
|
||||
cmp [symbols_file],0
|
||||
je assembler_error
|
||||
call dump_preprocessed_source
|
||||
call restore_preprocessed_source
|
||||
jmp assembler_error
|
2270
programs/develop/koldbg/fasm/exprcalc.inc
Normal file
2270
programs/develop/koldbg/fasm/exprcalc.inc
Normal file
File diff suppressed because it is too large
Load Diff
1280
programs/develop/koldbg/fasm/exprpars.inc
Normal file
1280
programs/develop/koldbg/fasm/exprpars.inc
Normal file
File diff suppressed because it is too large
Load Diff
155
programs/develop/koldbg/fasm/fasm.asm
Normal file
155
programs/develop/koldbg/fasm/fasm.asm
Normal file
@@ -0,0 +1,155 @@
|
||||
use32
|
||||
|
||||
open: cmp edx,input_magic
|
||||
jne fail
|
||||
mov ebx,[edx]
|
||||
ret
|
||||
|
||||
close: cmp ebx,[input_magic]
|
||||
jne fail
|
||||
xor ebx,ebx ;CF=0
|
||||
ret
|
||||
|
||||
lseek: cmp ebx,[input_magic]
|
||||
jne fail
|
||||
|
||||
cmp al,2
|
||||
je .end
|
||||
cmp al,1
|
||||
je .pos
|
||||
cmp al,0
|
||||
jne fail
|
||||
|
||||
.str:
|
||||
mov eax,edx
|
||||
cmp eax,[input_size]
|
||||
ja fail
|
||||
jmp .ok
|
||||
|
||||
.end:
|
||||
mov eax,[input_size]
|
||||
neg edx
|
||||
add eax,edx
|
||||
jc fail
|
||||
.ok:
|
||||
mov [input_start],eax
|
||||
clc
|
||||
ret
|
||||
|
||||
.pos:
|
||||
mov eax,[input_start]
|
||||
add eax,edx
|
||||
cmp eax,[input_size]
|
||||
ja fail
|
||||
jmp .ok
|
||||
|
||||
read: cmp ebx,[input_magic]
|
||||
jne fail
|
||||
push esi edi
|
||||
mov esi,[input_start]
|
||||
add esi,[input_code]
|
||||
mov eax,[input_size]
|
||||
mov edi,edx
|
||||
cmp eax,ecx
|
||||
jnc skip
|
||||
mov ecx,eax
|
||||
skip: mov eax,ecx
|
||||
add [input_start],eax
|
||||
shr ecx,2
|
||||
cld
|
||||
rep movsd
|
||||
mov cl,al
|
||||
and cl,3
|
||||
rep movsb
|
||||
pop edi esi
|
||||
clc
|
||||
ret
|
||||
|
||||
write: ;not implemented
|
||||
create: ;not implemented
|
||||
|
||||
fail: stc
|
||||
ret
|
||||
|
||||
make_timestamp:
|
||||
xor eax,eax ;not implemented
|
||||
get_environment_variable: ;not implemented
|
||||
display_block: ;not implemented
|
||||
ret
|
||||
|
||||
assembler_error: fatal_error:
|
||||
pop [output_errs]
|
||||
stc
|
||||
jmp stack_restore
|
||||
|
||||
Assemble:
|
||||
xor eax,eax
|
||||
mov [output_errs],eax
|
||||
mov [output_size],eax
|
||||
mov [input_start],eax
|
||||
|
||||
mov [input_file],input_magic
|
||||
mov [input_size],ecx
|
||||
mov [input_code],esi
|
||||
mov [input_stack],esp
|
||||
|
||||
mov [memory_start],StdMemStr
|
||||
mov [memory_end],StdMemEnd
|
||||
mov [additional_memory],AddMemStr
|
||||
mov [additional_memory_end],AddMemEnd
|
||||
|
||||
lea eax,[esp-4*1024]
|
||||
mov [stack_limit],eax
|
||||
|
||||
call preprocessor
|
||||
call parser
|
||||
call assembler
|
||||
|
||||
mov esi,[code_start]
|
||||
mov ecx,edi
|
||||
sub ecx,esi
|
||||
|
||||
mov eax,256
|
||||
cmp ecx,eax
|
||||
jna max_256
|
||||
mov ecx,eax
|
||||
max_256:
|
||||
|
||||
mov [output_size],ecx
|
||||
mov edi,output_data
|
||||
rep movsb
|
||||
|
||||
stack_restore:
|
||||
|
||||
mov esp,[input_stack]
|
||||
mov esi,[output_errs]
|
||||
ret
|
||||
|
||||
include 'fasm\version.inc'
|
||||
include 'fasm\errors.inc'
|
||||
include 'fasm\symbdump.inc'
|
||||
include 'fasm\preproce.inc'
|
||||
include 'fasm\parser.inc'
|
||||
include 'fasm\exprpars.inc'
|
||||
include 'fasm\assemble.inc'
|
||||
include 'fasm\exprcalc.inc'
|
||||
include 'fasm\formats.inc'
|
||||
include 'fasm\x86_64.inc'
|
||||
include 'fasm\avx.inc'
|
||||
|
||||
include 'fasm\tables.inc'
|
||||
include 'fasm\messages.inc'
|
||||
|
||||
iglobal
|
||||
input_magic dd 55AA55AAh
|
||||
endg
|
||||
uglobal
|
||||
input_code dd ?
|
||||
input_size dd ?
|
||||
input_start dd ?
|
||||
input_stack dd ?
|
||||
output_size dd ?
|
||||
output_errs dd ?
|
||||
output_data rb 256
|
||||
include 'fasm\variable.inc'
|
||||
endg
|
4194
programs/develop/koldbg/fasm/formats.inc
Normal file
4194
programs/develop/koldbg/fasm/formats.inc
Normal file
File diff suppressed because it is too large
Load Diff
52
programs/develop/koldbg/fasm/messages.inc
Normal file
52
programs/develop/koldbg/fasm/messages.inc
Normal file
@@ -0,0 +1,52 @@
|
||||
|
||||
; flat assembler core
|
||||
; Copyright (c) 1999-2019, Tomasz Grysztar.
|
||||
; All rights reserved.
|
||||
|
||||
_out_of_memory db 'out of memory',0
|
||||
_stack_overflow db 'out of stack space',0
|
||||
_main_file_not_found db 'source file not found',0
|
||||
_unexpected_end_of_file db 'unexpected end of file',0
|
||||
_code_cannot_be_generated db 'code cannot be generated',0
|
||||
_format_limitations_exceeded db 'format limitations exceeded',0
|
||||
_invalid_definition db 'invalid definition provided',0
|
||||
_write_failed db 'write failed',0
|
||||
_file_not_found db 'file not found',0
|
||||
_error_reading_file db 'error reading file',0
|
||||
_invalid_file_format db 'invalid file format',0
|
||||
_invalid_macro_arguments db 'invalid macro arguments',0
|
||||
_incomplete_macro db 'incomplete macro',0
|
||||
_unexpected_characters db 'unexpected characters',0
|
||||
_invalid_argument db 'invalid argument',0
|
||||
_illegal_instruction db 'illegal instruction',0
|
||||
_invalid_operand db 'invalid operand',0
|
||||
_invalid_operand_size db 'invalid size of operand',0
|
||||
_operand_size_not_specified db 'operand size not specified',0
|
||||
_operand_sizes_do_not_match db 'operand sizes do not match',0
|
||||
_invalid_address_size db 'invalid size of address value',0
|
||||
_address_sizes_do_not_agree db 'address sizes do not agree',0
|
||||
_disallowed_combination_of_registers db 'disallowed combination of registers',0
|
||||
_long_immediate_not_encodable db 'not encodable with long immediate',0
|
||||
_relative_jump_out_of_range db 'relative jump out of range',0
|
||||
_invalid_expression db 'invalid expression',0
|
||||
_invalid_address db 'invalid address',0
|
||||
_invalid_value db 'invalid value',0
|
||||
_value_out_of_range db 'value out of range',0
|
||||
_undefined_symbol db 'undefined symbol',0
|
||||
_symbol_out_of_scope_1 db 'symbol',0
|
||||
_symbol_out_of_scope_2 db 'out of scope',0
|
||||
_invalid_use_of_symbol db 'invalid use of symbol',0
|
||||
_name_too_long db 'name too long',0
|
||||
_invalid_name db 'invalid name',0
|
||||
_reserved_word_used_as_symbol db 'reserved word used as symbol',0
|
||||
_symbol_already_defined db 'symbol already defined',0
|
||||
_missing_end_quote db 'missing end quote',0
|
||||
_missing_end_directive db 'missing end directive',0
|
||||
_unexpected_instruction db 'unexpected instruction',0
|
||||
_extra_characters_on_line db 'extra characters on line',0
|
||||
_section_not_aligned_enough db 'section is not aligned enough',0
|
||||
_setting_already_specified db 'setting already specified',0
|
||||
_data_already_defined db 'data already defined',0
|
||||
_too_many_repeats db 'too many repeats',0
|
||||
_invoked_error db 'error directive encountered in source file',0
|
||||
_assertion_failed db 'assertion failed',0
|
1470
programs/develop/koldbg/fasm/parser.inc
Normal file
1470
programs/develop/koldbg/fasm/parser.inc
Normal file
File diff suppressed because it is too large
Load Diff
2899
programs/develop/koldbg/fasm/preproce.inc
Normal file
2899
programs/develop/koldbg/fasm/preproce.inc
Normal file
File diff suppressed because it is too large
Load Diff
450
programs/develop/koldbg/fasm/symbdump.inc
Normal file
450
programs/develop/koldbg/fasm/symbdump.inc
Normal file
@@ -0,0 +1,450 @@
|
||||
|
||||
; flat assembler core
|
||||
; Copyright (c) 1999-2019, Tomasz Grysztar.
|
||||
; All rights reserved.
|
||||
|
||||
dump_symbols:
|
||||
mov edi,[code_start]
|
||||
call setup_dump_header
|
||||
mov esi,[input_file]
|
||||
call copy_asciiz
|
||||
cmp edi,[tagged_blocks]
|
||||
jae out_of_memory
|
||||
mov eax,edi
|
||||
sub eax,ebx
|
||||
mov [ebx-40h+0Ch],eax
|
||||
mov esi,[output_file]
|
||||
call copy_asciiz
|
||||
cmp edi,[tagged_blocks]
|
||||
jae out_of_memory
|
||||
mov edx,[symbols_stream]
|
||||
mov ebp,[free_additional_memory]
|
||||
and [number_of_sections],0
|
||||
cmp [output_format],4
|
||||
je prepare_strings_table
|
||||
cmp [output_format],5
|
||||
jne strings_table_ready
|
||||
bt [format_flags],0
|
||||
jc strings_table_ready
|
||||
prepare_strings_table:
|
||||
cmp edx,ebp
|
||||
je strings_table_ready
|
||||
mov al,[edx]
|
||||
test al,al
|
||||
jz prepare_string
|
||||
cmp al,80h
|
||||
je prepare_string
|
||||
add edx,0Ch
|
||||
cmp al,0C0h
|
||||
jb prepare_strings_table
|
||||
add edx,4
|
||||
jmp prepare_strings_table
|
||||
prepare_string:
|
||||
mov esi,edi
|
||||
sub esi,ebx
|
||||
xchg esi,[edx+4]
|
||||
test al,al
|
||||
jz prepare_section_string
|
||||
or dword [edx+4],1 shl 31
|
||||
add edx,0Ch
|
||||
prepare_external_string:
|
||||
mov ecx,[esi]
|
||||
add esi,4
|
||||
rep movs byte [edi],[esi]
|
||||
mov byte [edi],0
|
||||
inc edi
|
||||
cmp edi,[tagged_blocks]
|
||||
jae out_of_memory
|
||||
jmp prepare_strings_table
|
||||
prepare_section_string:
|
||||
mov ecx,[number_of_sections]
|
||||
mov eax,ecx
|
||||
inc eax
|
||||
mov [number_of_sections],eax
|
||||
xchg eax,[edx+4]
|
||||
shl ecx,2
|
||||
add ecx,[free_additional_memory]
|
||||
mov [ecx],eax
|
||||
add edx,20h
|
||||
test esi,esi
|
||||
jz prepare_default_section_string
|
||||
cmp [output_format],5
|
||||
jne prepare_external_string
|
||||
bt [format_flags],0
|
||||
jc prepare_external_string
|
||||
mov esi,[esi]
|
||||
add esi,[resource_data]
|
||||
copy_elf_section_name:
|
||||
lods byte [esi]
|
||||
cmp edi,[tagged_blocks]
|
||||
jae out_of_memory
|
||||
stos byte [edi]
|
||||
test al,al
|
||||
jnz copy_elf_section_name
|
||||
jmp prepare_strings_table
|
||||
prepare_default_section_string:
|
||||
mov eax,'.fla'
|
||||
stos dword [edi]
|
||||
mov ax,'t'
|
||||
stos word [edi]
|
||||
cmp edi,[tagged_blocks]
|
||||
jae out_of_memory
|
||||
jmp prepare_strings_table
|
||||
strings_table_ready:
|
||||
mov edx,[tagged_blocks]
|
||||
mov ebp,[memory_end]
|
||||
sub ebp,[labels_list]
|
||||
add ebp,edx
|
||||
prepare_labels_dump:
|
||||
cmp edx,ebp
|
||||
je labels_dump_ok
|
||||
mov eax,[edx+24]
|
||||
test eax,eax
|
||||
jz label_dump_name_ok
|
||||
cmp eax,[memory_start]
|
||||
jb label_name_outside_source
|
||||
cmp eax,[source_start]
|
||||
ja label_name_outside_source
|
||||
sub eax,[memory_start]
|
||||
dec eax
|
||||
mov [edx+24],eax
|
||||
jmp label_dump_name_ok
|
||||
label_name_outside_source:
|
||||
mov esi,eax
|
||||
mov eax,edi
|
||||
sub eax,ebx
|
||||
or eax,1 shl 31
|
||||
mov [edx+24],eax
|
||||
movzx ecx,byte [esi-1]
|
||||
lea eax,[edi+ecx+1]
|
||||
cmp edi,[tagged_blocks]
|
||||
jae out_of_memory
|
||||
rep movsb
|
||||
xor al,al
|
||||
stosb
|
||||
label_dump_name_ok:
|
||||
mov eax,[edx+28]
|
||||
test eax,eax
|
||||
jz label_dump_line_ok
|
||||
sub eax,[memory_start]
|
||||
mov [edx+28],eax
|
||||
label_dump_line_ok:
|
||||
test byte [edx+9],4
|
||||
jz convert_base_symbol_for_label
|
||||
xor eax,eax
|
||||
mov [edx],eax
|
||||
mov [edx+4],eax
|
||||
jmp base_symbol_for_label_ok
|
||||
convert_base_symbol_for_label:
|
||||
mov eax,[edx+20]
|
||||
test eax,eax
|
||||
jz base_symbol_for_label_ok
|
||||
cmp eax,[symbols_stream]
|
||||
mov eax,[eax+4]
|
||||
jae base_symbol_for_label_ok
|
||||
xor eax,eax
|
||||
base_symbol_for_label_ok:
|
||||
mov [edx+20],eax
|
||||
mov ax,[current_pass]
|
||||
cmp ax,[edx+16]
|
||||
je label_defined_flag_ok
|
||||
and byte [edx+8],not 1
|
||||
label_defined_flag_ok:
|
||||
cmp ax,[edx+18]
|
||||
je label_used_flag_ok
|
||||
and byte [edx+8],not 8
|
||||
label_used_flag_ok:
|
||||
add edx,LABEL_STRUCTURE_SIZE
|
||||
jmp prepare_labels_dump
|
||||
labels_dump_ok:
|
||||
mov eax,edi
|
||||
sub eax,ebx
|
||||
mov [ebx-40h+14h],eax
|
||||
add eax,40h
|
||||
mov [ebx-40h+18h],eax
|
||||
mov ecx,[memory_end]
|
||||
sub ecx,[labels_list]
|
||||
mov [ebx-40h+1Ch],ecx
|
||||
add eax,ecx
|
||||
mov [ebx-40h+20h],eax
|
||||
mov ecx,[source_start]
|
||||
sub ecx,[memory_start]
|
||||
mov [ebx-40h+24h],ecx
|
||||
add eax,ecx
|
||||
mov [ebx-40h+28h],eax
|
||||
mov eax,[number_of_sections]
|
||||
shl eax,2
|
||||
mov [ebx-40h+34h],eax
|
||||
call prepare_preprocessed_source
|
||||
mov esi,[labels_list]
|
||||
mov ebp,edi
|
||||
make_lines_dump:
|
||||
cmp esi,[tagged_blocks]
|
||||
je lines_dump_ok
|
||||
mov eax,[esi-4]
|
||||
mov ecx,[esi-8]
|
||||
sub esi,8
|
||||
sub esi,ecx
|
||||
cmp eax,1
|
||||
je process_line_dump
|
||||
cmp eax,2
|
||||
jne make_lines_dump
|
||||
add dword [ebx-40h+3Ch],8
|
||||
jmp make_lines_dump
|
||||
process_line_dump:
|
||||
push ebx
|
||||
mov ebx,[esi+8]
|
||||
mov eax,[esi+4]
|
||||
sub eax,[code_start]
|
||||
add eax,[headers_size]
|
||||
test byte [ebx+0Ah],1
|
||||
jz store_offset
|
||||
xor eax,eax
|
||||
store_offset:
|
||||
stos dword [edi]
|
||||
mov eax,[esi]
|
||||
sub eax,[memory_start]
|
||||
stos dword [edi]
|
||||
mov eax,[esi+4]
|
||||
xor edx,edx
|
||||
xor cl,cl
|
||||
sub eax,[ebx]
|
||||
sbb edx,[ebx+4]
|
||||
sbb cl,[ebx+8]
|
||||
stos dword [edi]
|
||||
mov eax,edx
|
||||
stos dword [edi]
|
||||
mov eax,[ebx+10h]
|
||||
stos dword [edi]
|
||||
mov eax,[ebx+14h]
|
||||
test eax,eax
|
||||
jz base_symbol_for_line_ok
|
||||
cmp eax,[symbols_stream]
|
||||
mov eax,[eax+4]
|
||||
jae base_symbol_for_line_ok
|
||||
xor eax,eax
|
||||
base_symbol_for_line_ok:
|
||||
stos dword [edi]
|
||||
mov al,[ebx+9]
|
||||
stos byte [edi]
|
||||
mov al,[esi+10h]
|
||||
stos byte [edi]
|
||||
mov al,[ebx+0Ah]
|
||||
and al,1
|
||||
stos byte [edi]
|
||||
mov al,cl
|
||||
stos byte [edi]
|
||||
pop ebx
|
||||
cmp edi,[tagged_blocks]
|
||||
jae out_of_memory
|
||||
mov eax,edi
|
||||
sub eax,1Ch
|
||||
sub eax,ebp
|
||||
mov [esi],eax
|
||||
jmp make_lines_dump
|
||||
lines_dump_ok:
|
||||
mov edx,edi
|
||||
mov eax,[current_offset]
|
||||
sub eax,[code_start]
|
||||
add eax,[headers_size]
|
||||
stos dword [edi]
|
||||
mov ecx,edi
|
||||
sub ecx,ebx
|
||||
sub ecx,[ebx-40h+14h]
|
||||
mov [ebx-40h+2Ch],ecx
|
||||
add ecx,[ebx-40h+28h]
|
||||
mov [ebx-40h+30h],ecx
|
||||
add ecx,[ebx-40h+34h]
|
||||
mov [ebx-40h+38h],ecx
|
||||
find_inexisting_offsets:
|
||||
sub edx,1Ch
|
||||
cmp edx,ebp
|
||||
jb write_symbols
|
||||
test byte [edx+1Ah],1
|
||||
jnz find_inexisting_offsets
|
||||
cmp eax,[edx]
|
||||
jb correct_inexisting_offset
|
||||
mov eax,[edx]
|
||||
jmp find_inexisting_offsets
|
||||
correct_inexisting_offset:
|
||||
and dword [edx],0
|
||||
or byte [edx+1Ah],2
|
||||
jmp find_inexisting_offsets
|
||||
write_symbols:
|
||||
mov edx,[symbols_file]
|
||||
call create
|
||||
jc write_failed
|
||||
mov edx,[code_start]
|
||||
mov ecx,[edx+14h]
|
||||
add ecx,40h
|
||||
call write
|
||||
jc write_failed
|
||||
mov edx,[tagged_blocks]
|
||||
mov ecx,[memory_end]
|
||||
sub ecx,[labels_list]
|
||||
call write
|
||||
jc write_failed
|
||||
mov edx,[memory_start]
|
||||
mov ecx,[source_start]
|
||||
sub ecx,edx
|
||||
call write
|
||||
jc write_failed
|
||||
mov edx,ebp
|
||||
mov ecx,edi
|
||||
sub ecx,edx
|
||||
call write
|
||||
jc write_failed
|
||||
mov edx,[free_additional_memory]
|
||||
mov ecx,[number_of_sections]
|
||||
shl ecx,2
|
||||
call write
|
||||
jc write_failed
|
||||
mov esi,[labels_list]
|
||||
mov edi,[memory_start]
|
||||
make_references_dump:
|
||||
cmp esi,[tagged_blocks]
|
||||
je references_dump_ok
|
||||
mov eax,[esi-4]
|
||||
mov ecx,[esi-8]
|
||||
sub esi,8
|
||||
sub esi,ecx
|
||||
cmp eax,2
|
||||
je dump_reference
|
||||
cmp eax,1
|
||||
jne make_references_dump
|
||||
mov edx,[esi]
|
||||
jmp make_references_dump
|
||||
dump_reference:
|
||||
mov eax,[memory_end]
|
||||
sub eax,[esi]
|
||||
sub eax,LABEL_STRUCTURE_SIZE
|
||||
stosd
|
||||
mov eax,edx
|
||||
stosd
|
||||
cmp edi,[tagged_blocks]
|
||||
jb make_references_dump
|
||||
jmp out_of_memory
|
||||
references_dump_ok:
|
||||
mov edx,[memory_start]
|
||||
mov ecx,edi
|
||||
sub ecx,edx
|
||||
call write
|
||||
jc write_failed
|
||||
call close
|
||||
ret
|
||||
setup_dump_header:
|
||||
xor eax,eax
|
||||
mov ecx,40h shr 2
|
||||
rep stos dword [edi]
|
||||
mov ebx,edi
|
||||
mov dword [ebx-40h],'fas'+1Ah shl 24
|
||||
mov dword [ebx-40h+4],VERSION_MAJOR + VERSION_MINOR shl 8 + 40h shl 16
|
||||
mov dword [ebx-40h+10h],40h
|
||||
ret
|
||||
prepare_preprocessed_source:
|
||||
mov esi,[memory_start]
|
||||
mov ebp,[source_start]
|
||||
test ebp,ebp
|
||||
jnz prepare_preprocessed_line
|
||||
mov ebp,[current_line]
|
||||
inc ebp
|
||||
prepare_preprocessed_line:
|
||||
cmp esi,ebp
|
||||
jae preprocessed_source_ok
|
||||
mov eax,[memory_start]
|
||||
mov edx,[input_file]
|
||||
cmp [esi],edx
|
||||
jne line_not_from_main_input
|
||||
mov [esi],eax
|
||||
line_not_from_main_input:
|
||||
sub [esi],eax
|
||||
test byte [esi+7],1 shl 7
|
||||
jz prepare_next_preprocessed_line
|
||||
sub [esi+8],eax
|
||||
sub [esi+12],eax
|
||||
prepare_next_preprocessed_line:
|
||||
call skip_preprocessed_line
|
||||
jmp prepare_preprocessed_line
|
||||
preprocessed_source_ok:
|
||||
ret
|
||||
skip_preprocessed_line:
|
||||
add esi,16
|
||||
skip_preprocessed_line_content:
|
||||
lods byte [esi]
|
||||
cmp al,1Ah
|
||||
je skip_preprocessed_symbol
|
||||
cmp al,3Bh
|
||||
je skip_preprocessed_symbol
|
||||
cmp al,22h
|
||||
je skip_preprocessed_string
|
||||
or al,al
|
||||
jnz skip_preprocessed_line_content
|
||||
ret
|
||||
skip_preprocessed_string:
|
||||
lods dword [esi]
|
||||
add esi,eax
|
||||
jmp skip_preprocessed_line_content
|
||||
skip_preprocessed_symbol:
|
||||
lods byte [esi]
|
||||
movzx eax,al
|
||||
add esi,eax
|
||||
jmp skip_preprocessed_line_content
|
||||
restore_preprocessed_source:
|
||||
mov esi,[memory_start]
|
||||
mov ebp,[source_start]
|
||||
test ebp,ebp
|
||||
jnz restore_preprocessed_line
|
||||
mov ebp,[current_line]
|
||||
inc ebp
|
||||
restore_preprocessed_line:
|
||||
cmp esi,ebp
|
||||
jae preprocessed_source_restored
|
||||
mov eax,[memory_start]
|
||||
add [esi],eax
|
||||
cmp [esi],eax
|
||||
jne preprocessed_line_source_restored
|
||||
mov edx,[input_file]
|
||||
mov [esi],edx
|
||||
preprocessed_line_source_restored:
|
||||
test byte [esi+7],1 shl 7
|
||||
jz restore_next_preprocessed_line
|
||||
add [esi+8],eax
|
||||
add [esi+12],eax
|
||||
restore_next_preprocessed_line:
|
||||
call skip_preprocessed_line
|
||||
jmp restore_preprocessed_line
|
||||
preprocessed_source_restored:
|
||||
ret
|
||||
dump_preprocessed_source:
|
||||
mov edi,[free_additional_memory]
|
||||
call setup_dump_header
|
||||
mov esi,[input_file]
|
||||
call copy_asciiz
|
||||
cmp edi,[additional_memory_end]
|
||||
jae out_of_memory
|
||||
mov eax,edi
|
||||
sub eax,ebx
|
||||
dec eax
|
||||
mov [ebx-40h+0Ch],eax
|
||||
mov eax,edi
|
||||
sub eax,ebx
|
||||
mov [ebx-40h+14h],eax
|
||||
add eax,40h
|
||||
mov [ebx-40h+20h],eax
|
||||
call prepare_preprocessed_source
|
||||
sub esi,[memory_start]
|
||||
mov [ebx-40h+24h],esi
|
||||
mov edx,[symbols_file]
|
||||
call create
|
||||
jc write_failed
|
||||
mov edx,[free_additional_memory]
|
||||
mov ecx,[edx+14h]
|
||||
add ecx,40h
|
||||
call write
|
||||
jc write_failed
|
||||
mov edx,[memory_start]
|
||||
mov ecx,esi
|
||||
call write
|
||||
jc write_failed
|
||||
call close
|
||||
ret
|
4374
programs/develop/koldbg/fasm/tables.inc
Normal file
4374
programs/develop/koldbg/fasm/tables.inc
Normal file
File diff suppressed because it is too large
Load Diff
155
programs/develop/koldbg/fasm/variable.inc
Normal file
155
programs/develop/koldbg/fasm/variable.inc
Normal file
@@ -0,0 +1,155 @@
|
||||
|
||||
; flat assembler core variables
|
||||
; Copyright (c) 1999-2019, Tomasz Grysztar.
|
||||
; All rights reserved.
|
||||
|
||||
; Variables which have to be set up by interface:
|
||||
|
||||
memory_start dd ?
|
||||
memory_end dd ?
|
||||
|
||||
additional_memory dd ?
|
||||
additional_memory_end dd ?
|
||||
|
||||
stack_limit dd ?
|
||||
|
||||
initial_definitions dd ?
|
||||
input_file dd ?
|
||||
output_file dd ?
|
||||
symbols_file dd ?
|
||||
|
||||
passes_limit dw ?
|
||||
|
||||
; Internal core variables:
|
||||
|
||||
current_pass dw ?
|
||||
|
||||
include_paths dd ?
|
||||
free_additional_memory dd ?
|
||||
source_start dd ?
|
||||
code_start dd ?
|
||||
code_size dd ?
|
||||
real_code_size dd ?
|
||||
written_size dd ?
|
||||
headers_size dd ?
|
||||
|
||||
current_line dd ?
|
||||
macro_line dd ?
|
||||
macro_block dd ?
|
||||
macro_block_line dd ?
|
||||
macro_block_line_number dd ?
|
||||
macro_symbols dd ?
|
||||
struc_name dd ?
|
||||
struc_label dd ?
|
||||
instant_macro_start dd ?
|
||||
parameters_end dd ?
|
||||
default_argument_value dd ?
|
||||
locals_counter rb 8
|
||||
current_locals_prefix dd ?
|
||||
anonymous_reverse dd ?
|
||||
anonymous_forward dd ?
|
||||
labels_list dd ?
|
||||
label_hash dd ?
|
||||
label_leaf dd ?
|
||||
hash_tree dd ?
|
||||
addressing_space dd ?
|
||||
undefined_data_start dd ?
|
||||
undefined_data_end dd ?
|
||||
counter dd ?
|
||||
counter_limit dd ?
|
||||
error_info dd ?
|
||||
error_line dd ?
|
||||
error dd ?
|
||||
tagged_blocks dd ?
|
||||
structures_buffer dd ?
|
||||
number_start dd ?
|
||||
current_offset dd ?
|
||||
value dq ?
|
||||
fp_value rd 8
|
||||
adjustment dq ?
|
||||
symbol_identifier dd ?
|
||||
address_symbol dd ?
|
||||
address_high dd ?
|
||||
uncompressed_displacement dd ?
|
||||
format_flags dd ?
|
||||
resolver_flags dd ?
|
||||
symbols_stream dd ?
|
||||
number_of_relocations dd ?
|
||||
number_of_sections dd ?
|
||||
stub_size dd ?
|
||||
stub_file dd ?
|
||||
current_section dd ?
|
||||
machine dw ?
|
||||
subsystem dw ?
|
||||
subsystem_version dd ?
|
||||
image_base dd ?
|
||||
image_base_high dd ?
|
||||
merge_segment dd ?
|
||||
resource_data dd ?
|
||||
resource_size dd ?
|
||||
actual_fixups_size dd ?
|
||||
reserved_fixups dd ?
|
||||
reserved_fixups_size dd ?
|
||||
last_fixup_base dd ?
|
||||
last_fixup_header dd ?
|
||||
parenthesis_stack dd ?
|
||||
blocks_stack dd ?
|
||||
parsed_lines dd ?
|
||||
logical_value_parentheses dd ?
|
||||
file_extension dd ?
|
||||
|
||||
operand_size db ?
|
||||
operand_flags db ?
|
||||
operand_prefix db ?
|
||||
rex_prefix db ?
|
||||
opcode_prefix db ?
|
||||
vex_required db ?
|
||||
vex_register db ?
|
||||
immediate_size db ?
|
||||
mask_register db ?
|
||||
broadcast_size db ?
|
||||
rounding_mode db ?
|
||||
|
||||
base_code db ?
|
||||
extended_code db ?
|
||||
supplemental_code db ?
|
||||
postbyte_register db ?
|
||||
segment_register db ?
|
||||
xop_opcode_map db ?
|
||||
|
||||
mmx_size db ?
|
||||
jump_type db ?
|
||||
push_size db ?
|
||||
value_size db ?
|
||||
address_size db ?
|
||||
label_size db ?
|
||||
size_declared db ?
|
||||
address_size_declared db ?
|
||||
displacement_compression db ?
|
||||
|
||||
value_undefined db ?
|
||||
value_constant db ?
|
||||
value_type db ?
|
||||
value_sign db ?
|
||||
fp_sign db ?
|
||||
fp_format db ?
|
||||
address_sign db ?
|
||||
address_register db ?
|
||||
compare_type db ?
|
||||
logical_value_wrapping db ?
|
||||
next_pass_needed db ?
|
||||
output_format db ?
|
||||
code_type db ?
|
||||
adjustment_sign db ?
|
||||
evex_mode db ?
|
||||
|
||||
macro_status db ?
|
||||
skip_default_argument_value db ?
|
||||
prefix_flags db ?
|
||||
formatter_symbols_allowed db ?
|
||||
decorator_symbols_allowed db ?
|
||||
free_address_range db ?
|
||||
|
||||
characters rb 100h
|
||||
converted rb 100h
|
||||
message rb 180h
|
39
programs/develop/koldbg/fasm/version.inc
Normal file
39
programs/develop/koldbg/fasm/version.inc
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
; flat assembler version 1.73
|
||||
; Copyright (c) 1999-2019, Tomasz Grysztar.
|
||||
; All rights reserved.
|
||||
;
|
||||
; This programs is free for commercial and non-commercial use as long as
|
||||
; the following conditions are adhered to.
|
||||
;
|
||||
; Redistribution and use in source and binary forms, with or without
|
||||
; modification, are permitted provided that the following conditions are
|
||||
; met:
|
||||
;
|
||||
; 1. Redistributions of source code must retain the above copyright notice,
|
||||
; this list of conditions and the following disclaimer.
|
||||
; 2. Redistributions in binary form must reproduce the above copyright
|
||||
; notice, this list of conditions and the following disclaimer in the
|
||||
; documentation and/or other materials provided with the distribution.
|
||||
;
|
||||
; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
|
||||
; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
;
|
||||
; The licence and distribution terms for any publically available
|
||||
; version or derivative of this code cannot be changed. i.e. this code
|
||||
; cannot simply be copied and put under another distribution licence
|
||||
; (including the GNU Public Licence).
|
||||
|
||||
VERSION_STRING equ "1.73.21"
|
||||
|
||||
VERSION_MAJOR = 1
|
||||
VERSION_MINOR = 73
|
7384
programs/develop/koldbg/fasm/x86_64.inc
Normal file
7384
programs/develop/koldbg/fasm/x86_64.inc
Normal file
File diff suppressed because it is too large
Load Diff
132
programs/develop/koldbg/font.inc
Normal file
132
programs/develop/koldbg/font.inc
Normal file
@@ -0,0 +1,132 @@
|
||||
fontname equ 'font8x9.bmp'
|
||||
virtual at 0
|
||||
file fontname,3Eh
|
||||
; sanity check
|
||||
load a1 word from 0
|
||||
load a2 dword from 0xE
|
||||
if (a1 <> 'BM') | (a2 <> 0x28)
|
||||
error 'not BMP file!'
|
||||
end if
|
||||
load a1 dword from 0x12
|
||||
load a2 dword from 0x16
|
||||
if (a1 and 0xF) | (a2 and 0xF) | (a1 > 16*16)
|
||||
error 'font: invalid width or height'
|
||||
end if
|
||||
FontWidth = a1 shr 4
|
||||
font_bmp_scanline = (FontWidth*2 + 3) and not 3
|
||||
FontHeight = a2 shr 4
|
||||
load a1 dword from 0x1A
|
||||
if a1 <> 0x10001
|
||||
error 'font: not monochrome bitmap'
|
||||
end if
|
||||
end virtual
|
||||
|
||||
Font:
|
||||
macro set_name_test a,b
|
||||
{
|
||||
if %=a
|
||||
font_data_#a = b
|
||||
end if
|
||||
}
|
||||
macro set_name b
|
||||
{
|
||||
set_name_test 1,b
|
||||
set_name_test 2,b
|
||||
set_name_test 3,b
|
||||
set_name_test 4,b
|
||||
set_name_test 5,b
|
||||
set_name_test 6,b
|
||||
set_name_test 7,b
|
||||
set_name_test 8,b
|
||||
set_name_test 9,b
|
||||
set_name_test 10,b
|
||||
set_name_test 11,b
|
||||
set_name_test 12,b
|
||||
set_name_test 13,b
|
||||
set_name_test 14,b
|
||||
set_name_test 15,b
|
||||
set_name_test 16,b
|
||||
}
|
||||
macro db_name_test a
|
||||
{
|
||||
if %=a
|
||||
db font_data_#a
|
||||
end if
|
||||
}
|
||||
macro db_name
|
||||
{
|
||||
db_name_test 1
|
||||
db_name_test 2
|
||||
db_name_test 3
|
||||
db_name_test 4
|
||||
db_name_test 5
|
||||
db_name_test 6
|
||||
db_name_test 7
|
||||
db_name_test 8
|
||||
db_name_test 9
|
||||
db_name_test 10
|
||||
db_name_test 11
|
||||
db_name_test 12
|
||||
db_name_test 13
|
||||
db_name_test 14
|
||||
db_name_test 15
|
||||
db_name_test 16
|
||||
}
|
||||
macro dw_name_test a
|
||||
{
|
||||
if %=a
|
||||
dw font_data_#a
|
||||
end if
|
||||
}
|
||||
macro dw_name
|
||||
{
|
||||
dw_name_test 1
|
||||
dw_name_test 2
|
||||
dw_name_test 3
|
||||
dw_name_test 4
|
||||
dw_name_test 5
|
||||
dw_name_test 6
|
||||
dw_name_test 7
|
||||
dw_name_test 8
|
||||
dw_name_test 9
|
||||
dw_name_test 10
|
||||
dw_name_test 11
|
||||
dw_name_test 12
|
||||
dw_name_test 13
|
||||
dw_name_test 14
|
||||
dw_name_test 15
|
||||
dw_name_test 16
|
||||
}
|
||||
repeat FontHeight
|
||||
cur_scan = %
|
||||
repeat 16
|
||||
virtual at 0
|
||||
file fontname:3Eh + font_bmp_scanline*(FontHeight*(17-%)-cur_scan),FontWidth*2
|
||||
dd 0
|
||||
repeat 16
|
||||
load a1 dword from ((%-1)*FontWidth) shr 3
|
||||
a1 = ((a1 and 0x55555555) shl 1) or ((a1 and 0xAAAAAAAA) shr 1)
|
||||
a1 = ((a1 and 0x33333333) shl 2) or ((a1 and 0xCCCCCCCC) shr 2)
|
||||
a1 = ((a1 and 0x0F0F0F0F) shl 4) or ((a1 and 0xF0F0F0F0) shr 4)
|
||||
a1 = (a1 shr (((%-1)*FontWidth) and 7)) and ((1 shl FontWidth) - 1)
|
||||
a1 = a1 xor ((1 shl FontWidth) - 1)
|
||||
set_name a1
|
||||
end repeat
|
||||
end virtual
|
||||
if FontWidth > 8
|
||||
repeat 16
|
||||
dw_name
|
||||
end repeat
|
||||
else
|
||||
repeat 16
|
||||
db_name
|
||||
end repeat
|
||||
end if
|
||||
end repeat
|
||||
end repeat
|
||||
purge set_name_test
|
||||
purge db_name_test
|
||||
purge dw_name_test
|
||||
purge set_name
|
||||
purge db_name
|
||||
purge dw_name
|
BIN
programs/develop/koldbg/font8x9.bmp
Normal file
BIN
programs/develop/koldbg/font8x9.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
118
programs/develop/koldbg/globals!.inc
Normal file
118
programs/develop/koldbg/globals!.inc
Normal file
@@ -0,0 +1,118 @@
|
||||
|
||||
macro forward_list_builder name {
|
||||
local c
|
||||
macro .#name a& \{
|
||||
\local m
|
||||
c equ m
|
||||
macro m a
|
||||
\}
|
||||
macro name#List \{
|
||||
irpv v,c \\{
|
||||
;\\forward
|
||||
v
|
||||
\\}
|
||||
\}
|
||||
}
|
||||
|
||||
macro reverse_list_builder name {
|
||||
local c
|
||||
macro .#name a& \{
|
||||
\local m
|
||||
c equ m
|
||||
macro m a
|
||||
\}
|
||||
macro name#List \{
|
||||
irpv v,c \\{
|
||||
\\reverse
|
||||
v
|
||||
\\}
|
||||
\}
|
||||
}
|
||||
|
||||
forward_list_builder IGlobalBlock
|
||||
forward_list_builder SGlobalBlock
|
||||
forward_list_builder TGlobalBlock
|
||||
forward_list_builder UGlobalBlock
|
||||
forward_list_builder VGlobalBlock
|
||||
forward_list_builder XGlobalBlock
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; use "tglobal" for inserting TLS definitions.
|
||||
;------------------------------------------------------------------
|
||||
macro tglobal {
|
||||
.TGlobalBlock { }
|
||||
|
||||
macro tglobal_nested {
|
||||
.TGlobalBlock \{ }
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; use "vglobal" for inserting virtual definitions.
|
||||
;------------------------------------------------------------------
|
||||
macro vglobal {
|
||||
.VGlobalBlock { }
|
||||
|
||||
macro vglobal_nested {
|
||||
.VGlobalBlock \{ }
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; use "iglobal" for inserting initialized global data definitions.
|
||||
;------------------------------------------------------------------
|
||||
macro iglobal {
|
||||
.IGlobalBlock { }
|
||||
|
||||
macro iglobal_nested {
|
||||
.IGlobalBlock \{ }
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; use "sglobal" for inserting strings definitions.
|
||||
;------------------------------------------------------------------
|
||||
macro sglobal {
|
||||
.SGlobalBlock { }
|
||||
|
||||
macro sglobal_nested {
|
||||
.SGlobalBlock \{ }
|
||||
|
||||
;-------------------------------------------------------------
|
||||
; use 'uglobal' for inserting uninitialized global definitions.
|
||||
; even when you define some data values, these variables
|
||||
; will be stored as uninitialized data.
|
||||
;-------------------------------------------------------------
|
||||
macro uglobal {
|
||||
.UGlobalBlock { }
|
||||
|
||||
macro uglobal_nested {
|
||||
.UGlobalBlock \{ }
|
||||
|
||||
;-------------------------------------------------------------
|
||||
; use 'xglobal' for inserting uninitialized global definitions.
|
||||
; even when you define some data values, these variables
|
||||
; will be stored as uninitialized data.
|
||||
;-------------------------------------------------------------
|
||||
macro xglobal {
|
||||
.XGlobalBlock { }
|
||||
|
||||
macro xglobal_nested {
|
||||
.XGlobalBlock \{ }
|
||||
|
||||
endg fix } ; Use endg for ending iglobal and uglobal blocks.
|
||||
endg_nested fix \}
|
||||
|
||||
macro IncludeGlobals MacroName
|
||||
{
|
||||
local Begin,Size
|
||||
virtual at $
|
||||
Begin = $
|
||||
MacroName
|
||||
Size = $-Begin
|
||||
end virtual
|
||||
rb Size
|
||||
}
|
||||
|
||||
macro IncludeAllGlobals {
|
||||
IGlobalBlockList
|
||||
SGlobalBlockList
|
||||
UDataStr:
|
||||
IncludeGlobals UGlobalBlockList ;will be zeroed
|
||||
UDataEnd:
|
||||
IncludeGlobals XGlobalBlockList ;will be undefined
|
||||
}
|
3316
programs/develop/koldbg/kernel.inc
Normal file
3316
programs/develop/koldbg/kernel.inc
Normal file
File diff suppressed because it is too large
Load Diff
2911
programs/develop/koldbg/koldbg.asm
Normal file
2911
programs/develop/koldbg/koldbg.asm
Normal file
File diff suppressed because it is too large
Load Diff
298
programs/develop/koldbg/kosfuncs.inc
Normal file
298
programs/develop/koldbg/kosfuncs.inc
Normal file
@@ -0,0 +1,298 @@
|
||||
|
||||
; KolibriOS system functions:
|
||||
SF_TERMINATE_PROCESS=-1
|
||||
SF_CREATE_WINDOW=0 ; define and draw the window
|
||||
SF_PUT_PIXEL=1 ; draw pixel to the window
|
||||
SF_GET_KEY=2 ; get code of the pressed key
|
||||
SF_GET_SYS_TIME=3
|
||||
SF_DRAW_TEXT=4
|
||||
SF_SLEEP=5 ; pause process
|
||||
SF_PUT_IMAGE=7 ; draw image to the window
|
||||
SF_DEFINE_BUTTON=8 ; define/delete the button
|
||||
SF_THREAD_INFO=9 ; information on execution thread
|
||||
SF_WAIT_EVENT=10 ; wait for event
|
||||
SF_CHECK_EVENT=11 ; check for event and return
|
||||
SF_REDRAW=12
|
||||
SSF_BEGIN_DRAW=1
|
||||
SSF_END_DRAW=2
|
||||
SF_DRAW_RECT=13 ; draw rectangle to the window
|
||||
SF_GET_SCREEN_SIZE=14 ; get screen resolution
|
||||
SF_BACKGROUND_SET=15 ; work with desktop background graphics
|
||||
SSF_SIZE_BG=1 ; set a size of the background image
|
||||
SSF_PIXEL_BG=2 ; put pixel on the background image
|
||||
SSF_REDRAW_BG=3 ; redraw background
|
||||
SSF_MODE_BG=4 ; set drawing mode for the background
|
||||
SSF_IMAGE_BG=5 ; put block of pixels on the background image
|
||||
SSF_MAP_BG=6 ; map background image to the address space of the process
|
||||
SSF_UNMAP_BG=7 ; close mapped background data
|
||||
SSF_LAST_DRAW=8 ; get coordinates of the last draw to the background
|
||||
SSF_REDRAW_RECT=9 ; redraws a rectangular part of the background
|
||||
SF_RD_TO_FLOPPY=16 ; save ramdisk on the floppy
|
||||
SF_GET_BUTTON=17 ; get ID of the pressed button
|
||||
SF_SYSTEM=18
|
||||
SSF_UNFOCUS_WINDOW=1 ; take focus from the window of the given thread
|
||||
SSF_TERMINATE_THREAD=2 ; terminate process/thread by the slot number
|
||||
SSF_FOCUS_WINDOW=3 ; give focus to the window of the given thread
|
||||
SSF_GET_IDLE_COUNT=4 ; get counter of idle cycles per second
|
||||
SSF_GET_CPU_FREQUENCY=5 ; get CPU clock rate
|
||||
SSF_RD_TO_HDD=6 ; save ramdisk to the file on hard disk
|
||||
SSF_GET_ACTIVE_WINDOW=7 ; get slot number of the active window
|
||||
SSF_SPEAKER=8
|
||||
SSSF_GET_STATE=1
|
||||
SSSF_TOGGLE=2
|
||||
SSF_SHUTDOWN=9 ; system shutdown/reboot
|
||||
SSF_MINIMIZE_WINDOW=10 ; minimize active window
|
||||
SSF_INFO_DISC_SYS=11 ; get disk subsystem information
|
||||
SSF_KERNEL_VERSION=13 ; get kernel version
|
||||
SSF_WAIT_RETRACE=14 ; wait for screen retrace
|
||||
SSF_CURSOR_CENTER=15 ; center mouse cursor on the screen
|
||||
SSF_GET_FREE_RAM=16 ; get size of free RAM
|
||||
SSF_GET_TOTAL_RAM=17 ; get total amount of RAM
|
||||
SSF_TERMINATE_THREAD_ID=18 ; Terminate process/thread by the ID
|
||||
SSF_MOUSE_SETTINGS=19
|
||||
SSSF_GET_SPEED=0
|
||||
SSSF_SET_SPEED=1
|
||||
SSSF_GET_SPEEDUP=2
|
||||
SSSF_SET_SPEEDUP=3 ; set mouse acceleration
|
||||
SSSF_SET_POS=4 ; set mouse pointer position
|
||||
SSSF_SET_BUTTON=5 ; simulate state of mouse buttons
|
||||
SSSF_GET_DOUBLE_CLICK_DELAY=6
|
||||
SSSF_SET_DOUBLE_CLICK_DELAY=7
|
||||
SSF_GET_RAM_INFO=20 ; get information on RAM
|
||||
SSF_GET_THREAD_SLOT=21 ; get slot number of process/thread by the ID
|
||||
SSF_FOREIGN_WINDOW=22 ; operations with window of another thread by slot/ID
|
||||
SSSF_MINIMIZE=0
|
||||
SSSF_MINIMIZE_ID=1
|
||||
SSSF_RESTORE=2
|
||||
SSSF_RESTORE_ID=3
|
||||
SSF_MINIMIZE_ALL=23
|
||||
SSF_SET_SCREEN_LIMITS=24
|
||||
SSF_WINDOW_BEHAVIOR=25 ; window focus relation with other windows
|
||||
SSSF_GET_WB=1
|
||||
SSSF_SET_WB=2
|
||||
SF_MIDI=20
|
||||
SSF_RESET=1
|
||||
SSF_OUTPUT=2
|
||||
SF_SYSTEM_SET=21
|
||||
SSF_MPU_MIDI_BASE=1
|
||||
SSF_KEYBOARD_LAYOUT=2
|
||||
SSF_SYS_LANG=5
|
||||
SSF_ACCESS_HD_LBA=11 ; setting of low-level access to HD
|
||||
SSF_ACCESS_PCI=12 ; setting of low-level access to PCI
|
||||
SF_SET_TIME_DATE=22
|
||||
SF_WAIT_EVENT_TIMEOUT=23; wait for event with timeout
|
||||
SF_CD=24
|
||||
SSF_EJECT_TRAY=4
|
||||
SSF_INSERT_TRAY=5
|
||||
SF_SCREEN_PUT_IMAGE=25 ; put image on the background layer
|
||||
SF_SYSTEM_GET=26
|
||||
; Same as SF_SYSTEM_SET, plus:
|
||||
SSF_TIME_COUNT=9
|
||||
SSF_TIME_COUNT_PRO=10 ; get value of the high precision time counter
|
||||
SF_GET_SYS_DATE=29
|
||||
SF_CURRENT_FOLDER=30
|
||||
SSF_SET_CF=1 ; set current folder for the thread
|
||||
SSF_GET_CF=2
|
||||
SSF_ADD_SYS_FOLDER=3 ; install the add.system directory for the kernel
|
||||
SF_GET_PIXEL_OWNER=34 ; get slot number of the screen pixel owner
|
||||
SF_GET_PIXEL=35 ; read the screen pixel color
|
||||
SF_GET_IMAGE=36 ; read the screen area
|
||||
SF_MOUSE_GET=37
|
||||
SSF_SCREEN_POSITION=0
|
||||
SSF_WINDOW_POSITION=1
|
||||
SSF_BUTTON=2 ; states of the mouse buttons
|
||||
SSF_BUTTON_EXT=3 ; states and events of the mouse buttons
|
||||
SSF_LOAD_CURSOR=4
|
||||
SSF_SET_CURSOR=5
|
||||
SSF_DEL_CURSOR=6
|
||||
SSF_SCROLL_DATA=7
|
||||
SF_DRAW_LINE=38
|
||||
SF_BACKGROUND_GET=39
|
||||
;SSF_SIZE_BG=1
|
||||
;SSF_PIXEL_BG=2
|
||||
;SSF_MODE_BG=4
|
||||
SF_SET_EVENTS_MASK=40 ; turn on/off desired events
|
||||
SF_PORT_IN_OUT=43 ; input/output to a port
|
||||
SF_SET_PORTS=46 ; reserve/free a group of input/output ports
|
||||
SF_DRAW_NUMBER=47 ; draw number to the window
|
||||
SF_STYLE_SETTINGS=48
|
||||
SSF_APPLY=0 ; apply screen settings
|
||||
SSF_SET_BUTTON_STYLE=1
|
||||
SSF_SET_COLORS=2
|
||||
SSF_GET_COLORS=3 ; get standard window colors
|
||||
SSF_GET_SKIN_HEIGHT=4
|
||||
SSF_GET_SCREEN_AREA=5 ; get screen working area
|
||||
SSF_SET_SCREEN_AREA=6
|
||||
SSF_GET_SKIN_MARGINS=7
|
||||
SSF_SET_SKIN=8
|
||||
SSF_GET_FONT_SMOOTH=9
|
||||
SSF_SET_FONT_SMOOTH=10
|
||||
SSF_GET_FONT_SIZE=11
|
||||
SSF_SET_FONT_SIZE=12
|
||||
SF_APM=49
|
||||
SF_SET_WINDOW_SHAPE=50
|
||||
SF_CREATE_THREAD=51
|
||||
SF_CLIPBOARD=54
|
||||
SSF_GET_SLOT_COUNT=0 ; get the number of slots in the clipboard
|
||||
SSF_READ_CB=1
|
||||
SSF_WRITE_CB=2
|
||||
SSF_DEL_SLOT=3 ; delete the last slot in the clipboard
|
||||
SSF_UNLOCK_BUFFER=4 ; emergency buffer unlock
|
||||
SF_SPEAKER_PLAY=55
|
||||
SF_PCI_BIOS=57
|
||||
SF_IPC=60 ; Inter Process Communication
|
||||
SSF_SET_AREA=1 ; set area for IPC receiving
|
||||
SSF_SEND_MESSAGE=2
|
||||
SF_GET_GRAPHICAL_PARAMS=61
|
||||
SSF_SCREEN_SIZE=1
|
||||
SSF_BITS_PER_PIXEL=2
|
||||
SSF_BYTES_PER_LINE=3
|
||||
SF_PCI=62
|
||||
SSF_GET_VERSION=0 ; get version of PCI-interface
|
||||
SSF_GET_LAST_BUS=1 ; get number of the last PCI-bus
|
||||
SSF_GET_ADRR_MODE=2 ; get addressing mode of the PCI configuration space
|
||||
SSF_READ_BYTE=4
|
||||
SSF_READ_WORD=5
|
||||
SSF_READ_DWORD=6
|
||||
SSF_WRITE_BYTE=8
|
||||
SSF_WRITE_WORD=9
|
||||
SSF_WRITE_DWORD=10
|
||||
SF_BOARD=63
|
||||
SSF_DEBUG_WRITE=1
|
||||
SSF_DEBUG_READ=2
|
||||
SF_MEMORY_RESIZE=64 ; resize total application memory
|
||||
SF_PUT_IMAGE_EXT=65 ; draw image with palette to the window
|
||||
SF_KEYBOARD=66
|
||||
SSF_SET_INPUT_MODE=1
|
||||
SSF_GET_INPUT_MODE=2
|
||||
SSF_GET_CONTROL_KEYS=3; get status of control keys
|
||||
SSF_SET_SYS_HOTKEY=4
|
||||
SSF_DEL_SYS_HOTKEY=5
|
||||
SSF_LOCK_INPUT=6 ; block normal input
|
||||
SSF_UNLOCK_INPUT=7 ; restore normal input
|
||||
SF_CHANGE_WINDOW=67 ; change position/sizes of the window
|
||||
SF_SYS_MISC=68
|
||||
SSF_GET_TASK_SWITCH_COUNT=0
|
||||
SSF_SWITCH_TASK=1
|
||||
SSF_PERFORMANCE=2
|
||||
SSSF_ALLOW_RDPMC=0
|
||||
SSSF_CACHE_STATUS=1
|
||||
SSSF_CACHE_ON=2
|
||||
SSSF_CACHE_OFF=3
|
||||
SSF_READ_MSR=3
|
||||
SSF_WRITE_MSR=4
|
||||
SSF_HEAP_INIT=11
|
||||
SSF_MEM_ALLOC=12
|
||||
SSF_MEM_FREE=13
|
||||
SSF_WAIT_SIGNAL=14 ; wait for signal from another program/driver
|
||||
SSF_LOAD_DRIVER=16
|
||||
SSF_CONTROL_DRIVER=17
|
||||
SSF_LOAD_DLL=19
|
||||
SSF_MEM_REALLOC=20
|
||||
SSF_LOAD_DRIVER_PE=21
|
||||
SSF_MEM_OPEN=22 ; open named memory area
|
||||
SSF_MEM_CLOSE=23
|
||||
SSF_SET_EXCEPTION_HANDLER=24
|
||||
SSF_SET_EXCEPTION_STATE=25
|
||||
SSF_MEM_FREE_EXT=26
|
||||
SSF_LOAD_FILE=27
|
||||
SF_DEBUG=69
|
||||
SSF_SET_MESSAGE_AREA=0
|
||||
SSF_GET_REGISTERS=1
|
||||
SSF_SET_REGISTERS=2
|
||||
SSF_DETACH=3
|
||||
SSF_SUSPEND=4
|
||||
SSF_RESUME=5
|
||||
SSF_READ_MEMORY=6
|
||||
SSF_WRITE_MEMORY=7
|
||||
SSF_TERMINATE=8
|
||||
SSF_DEFINE_BREAKPOINT=9
|
||||
SF_FILE=70
|
||||
SSF_READ_FILE=0
|
||||
SSF_READ_FOLDER=1
|
||||
SSF_CREATE_FILE=2
|
||||
SSF_WRITE_FILE=3
|
||||
SSF_SET_END=4
|
||||
SSF_GET_INFO=5
|
||||
SSF_SET_INFO=6
|
||||
SSF_START_APP=7
|
||||
SSF_DELETE=8
|
||||
SSF_CREATE_FOLDER=9
|
||||
SF_SET_CAPTION=71
|
||||
SF_SEND_MESSAGE=72
|
||||
SF_BLITTER=73
|
||||
SF_NETWORK_DEVICE=74
|
||||
SSF_DEVICE_COUNT=255 ; get number of active network devices
|
||||
SSF_DEVICE_TYPE=0
|
||||
SSF_DEVICE_NAME=1
|
||||
SSF_RESET_DEVICE=2
|
||||
SSF_STOP_DEVICE=3
|
||||
SSF_DEVICE_POINTER=4
|
||||
SSF_TX_PACKET_COUNT=6
|
||||
SSF_RX_PACKET_COUNT=7
|
||||
SSF_TX_BYTE_COUNT=8
|
||||
SSF_RX_BYTE_COUNT=9
|
||||
SSF_LINK_STATUS=10
|
||||
SSF_TX_PACKET_ERROR_COUNT=11
|
||||
SSF_TX_PACKET_DROP_COUNT=12
|
||||
SSF_TX_PACKET_MISS_COUNT=13
|
||||
SSF_RX_PACKET_ERROR_COUNT=14
|
||||
SSF_RX_PACKET_DROP_COUNT=15
|
||||
SSF_RX_PACKET_MISS_COUNT=16
|
||||
SF_NETWORK_SOCKET=75
|
||||
SSF_OPEN=0
|
||||
SSF_CLOSE=1
|
||||
SSF_BIND=2
|
||||
SSF_LISTEN=3
|
||||
SSF_CONNECT=4
|
||||
SSF_ACCEPT=5
|
||||
SSF_SEND=6
|
||||
SSF_RECEIVE=7
|
||||
SSF_SET_OPTIONS=8
|
||||
SSF_GET_OPTIONS=9
|
||||
SSF_SOCKET_PAIR=10
|
||||
SF_NETWORK_PROTOCOL=76
|
||||
SSF_ETHERNET_READ_MAC=0
|
||||
SSF_IP4_PACKETS_SENT=10000h
|
||||
SSF_IP4_PACKETS_RECEIVED=10001h
|
||||
SSF_IP4_READ_IP=10002h
|
||||
SSF_IP4_WRITE_IP=10003h
|
||||
SSF_IP4_READ_DNS=10004h
|
||||
SSF_IP4_WRITE_DNS=10005h
|
||||
SSF_IP4_READ_SUBNET=10006h
|
||||
SSF_IP4_WRITE_SUBNET=10007h
|
||||
SSF_IP4_READ_GATEWAY=10008h
|
||||
SSF_IP4_WRITE_GATEWAY=10009h
|
||||
SSF_ICMP_PACKETS_SENT=20000h
|
||||
SSF_ICMP_PACKETS_RECEIVED=20001h
|
||||
SSF_ICMP_ECHO_REPLY=20003h
|
||||
SSF_UDP_PACKETS_SENT=30000h
|
||||
SSF_UDP_PACKETS_RECEIVED=30001h
|
||||
SSF_TCP_PACKETS_SENT=40000h
|
||||
SSF_TCP_PACKETS_RECEIVED=40001h
|
||||
SSF_ARP_PACKETS_SENT=50000h
|
||||
SSF_ARP_PACKETS_RECEIVED=50001h
|
||||
SSF_ARP_GET_ENTRY_COUNT=50002h
|
||||
SSF_ARP_READ_ENTRY=50003h
|
||||
SSF_ARP_ADD_STATIC_ENTRY=50004h
|
||||
SSF_ARP_DEL_ENTRY=50005h
|
||||
SSF_ARP_SEND_ANNOUNCE=50006h
|
||||
SSF_ARP_CONFLICTS_COUNT=50007h
|
||||
SF_FUTEX=77
|
||||
SSF_CREATE=0
|
||||
SSF_DESTROY=1
|
||||
SSF_WAIT=2
|
||||
SSF_WAKE=3
|
||||
|
||||
; File system errors:
|
||||
FSERR_SUCCESS=0
|
||||
FSERR_UNSUPPORTED=2
|
||||
FSERR_UNKNOWN=3
|
||||
FSERR_FILE_NOT_FOUND=5
|
||||
FSERR_END_OF_FILE=6
|
||||
FSERR_INVALID_BUFFER=7
|
||||
FSERR_DISK_FULL=8
|
||||
FSERR_FAIL=9
|
||||
FSERR_ACCESS_DENIED=10
|
||||
FSERR_DEVICE_FAIL=11
|
||||
FSERR_OUT_OF_MEMORY=12
|
43
programs/develop/koldbg/loadmap.inc
Normal file
43
programs/develop/koldbg/loadmap.inc
Normal file
@@ -0,0 +1,43 @@
|
||||
uglobal
|
||||
LastNames dq ?
|
||||
ShowNames db ?
|
||||
endg
|
||||
|
||||
FindEAX:push esi
|
||||
and [LastNames],0
|
||||
cmp [ShowNames],0
|
||||
jnz .NoSymb
|
||||
cmp eax,0x80
|
||||
jl .NoSymb
|
||||
lea esi,[eax-1]
|
||||
test eax,esi
|
||||
jz .NoSymb
|
||||
call FindSymbol
|
||||
jc .NoSymb
|
||||
mov [LastNames],esi
|
||||
cmp rdi,[TheBufferO]
|
||||
jz .SetCol ;Skip starting address
|
||||
push edi
|
||||
@@:
|
||||
lodsb
|
||||
test al,al
|
||||
jz @F
|
||||
stosb
|
||||
jmp @B
|
||||
.SetCol:
|
||||
mov [BufferO-1],byte 31h ;Label Color
|
||||
.NoSymb:
|
||||
stc
|
||||
pop esi
|
||||
ret
|
||||
@@: mov ecx,edi
|
||||
sub ecx,[esp]
|
||||
cmp ecx,255
|
||||
ifa mov ecx,255
|
||||
pop edi
|
||||
add edi,ecx
|
||||
clc
|
||||
pop esi
|
||||
ret
|
||||
|
||||
include "symbols.inc"
|
1
programs/develop/koldbg/make.bat
Normal file
1
programs/develop/koldbg/make.bat
Normal file
@@ -0,0 +1 @@
|
||||
fasm koldbg.asm koldbg
|
120
programs/develop/koldbg/message.inc
Normal file
120
programs/develop/koldbg/message.inc
Normal file
@@ -0,0 +1,120 @@
|
||||
;-----------------------------------------------------------------------------
|
||||
; Working with messages
|
||||
; in: esi->ASCIIZ message
|
||||
PutMessageNoDraw:
|
||||
mov edx,[MessagesPos]
|
||||
.M:
|
||||
lea edi,[Messages+edx]
|
||||
.L:
|
||||
lodsb
|
||||
cmp al,0
|
||||
jz .Done
|
||||
call TestScroll
|
||||
cmp al,10
|
||||
jz .NewLine
|
||||
cmp al,'%'
|
||||
jnz @F
|
||||
cmp dword [esp],Z1
|
||||
jnz .Format
|
||||
@@:
|
||||
stosb
|
||||
inc edx
|
||||
jmp .L
|
||||
|
||||
.NewLine:
|
||||
push edx
|
||||
mov ecx,MSG_WIDTH
|
||||
xor eax,eax
|
||||
xchg eax,edx
|
||||
div ecx
|
||||
xchg eax,edx
|
||||
pop edx
|
||||
test eax,eax
|
||||
jz .M
|
||||
sub edx,eax
|
||||
add edx,ecx
|
||||
jmp .M
|
||||
|
||||
.Done:
|
||||
if 0
|
||||
cmp byte [esi-2],10
|
||||
jz .Exit
|
||||
call TestScroll
|
||||
if 1
|
||||
push edx
|
||||
mov ecx,MSG_WIDTH
|
||||
xor eax,eax
|
||||
xchg eax,edx
|
||||
div ecx
|
||||
xchg eax,edx
|
||||
pop edx
|
||||
test eax,eax
|
||||
jz .Exit
|
||||
sub edx,eax
|
||||
add edx,ecx
|
||||
end if
|
||||
end if
|
||||
.Exit:
|
||||
mov [MessagesPos],edx
|
||||
ret
|
||||
|
||||
; at this moment all format specs must be %<digit>X
|
||||
.Format:
|
||||
lodsb ; get <digit>
|
||||
sub al,'0'
|
||||
movzx ecx,al
|
||||
lodsb
|
||||
pop eax
|
||||
pop ebp
|
||||
push eax
|
||||
; write number in ebp with ecx digits
|
||||
dec ecx
|
||||
shl ecx,2
|
||||
|
||||
.WriteNibble:
|
||||
push ecx
|
||||
call TestScroll
|
||||
pop ecx
|
||||
mov eax,ebp
|
||||
shr eax,cl
|
||||
and al,0xF
|
||||
cmp al,10
|
||||
sbb al,69h
|
||||
das
|
||||
stosb
|
||||
inc edx
|
||||
sub ecx,4
|
||||
jns .WriteNibble
|
||||
jmp .L
|
||||
|
||||
TestScroll:
|
||||
cmp edx,MSG_WIDTH*MSG_HEIGHT
|
||||
jnz .Ret
|
||||
push esi
|
||||
mov edi,Messages
|
||||
lea esi,[edi+MSG_WIDTH]
|
||||
mov ecx,(MSG_HEIGHT-1)*MSG_WIDTH/4
|
||||
rep movsd
|
||||
push eax
|
||||
mov al,' '
|
||||
push edi
|
||||
push MSG_WIDTH
|
||||
pop ecx
|
||||
sub edx,ecx
|
||||
rep stosb
|
||||
pop edi
|
||||
pop eax
|
||||
pop esi
|
||||
.Ret:
|
||||
ret
|
||||
|
||||
MSG_WIDTH = DATA_WIDTH
|
||||
MSG_HEIGHT = 14 ; in text lines
|
||||
|
||||
NewLine db 10,0
|
||||
Prompt db '> ',0
|
||||
|
||||
uglobal
|
||||
MessagesPos dd ?
|
||||
Messages rb MSG_HEIGHT*MSG_WIDTH
|
||||
endg
|
396
programs/develop/koldbg/parser.inc
Normal file
396
programs/develop/koldbg/parser.inc
Normal file
@@ -0,0 +1,396 @@
|
||||
;-----------------------------------------------------------------------------
|
||||
TokenEnd = 1
|
||||
TokenReg = 2
|
||||
TokenHex = 3
|
||||
TokenOr = 4
|
||||
TokenAnd = 5
|
||||
TokenXor = 6
|
||||
TokenAdd = 7
|
||||
TokenSub = 8
|
||||
TokenMul = 9
|
||||
TokenDiv = 10
|
||||
TokenLP = 11
|
||||
TokenRP = 12
|
||||
TokenErr = -1
|
||||
;-----------------------------------------------------------------------------
|
||||
RegTable:
|
||||
db 2,'al',0
|
||||
db 2,'cl',1
|
||||
db 2,'dl',2
|
||||
db 2,'bl',3
|
||||
db 2,'ah',4
|
||||
db 2,'ch',5
|
||||
db 2,'dh',6
|
||||
db 2,'bh',7
|
||||
db 2,'ax',8
|
||||
db 2,'cx',9
|
||||
db 2,'dx',10
|
||||
db 2,'bx',11
|
||||
db 2,'sp',12
|
||||
db 2,'bp',13
|
||||
db 2,'si',14
|
||||
db 2,'di',15
|
||||
db 3,'eax',16
|
||||
db 3,'ecx',17
|
||||
db 3,'edx',18
|
||||
db 3,'ebx',19
|
||||
db 3,'esp',20
|
||||
db 3,'ebp',21
|
||||
db 3,'esi',22
|
||||
db 3,'edi',23
|
||||
db 3,'eip',24
|
||||
db 0
|
||||
;-----------------------------------------------------------------------------
|
||||
; Check if byte is hex digit
|
||||
IsHexDigit:
|
||||
cmp al,'0'
|
||||
jb .No
|
||||
cmp al,'9'
|
||||
jbe .09
|
||||
cmp al,'A'
|
||||
jb .No
|
||||
cmp al,'F'
|
||||
jbe .AF
|
||||
cmp al,'a'
|
||||
jb .No
|
||||
cmp al,'f'
|
||||
jbe .FA
|
||||
.No:
|
||||
stc
|
||||
ret
|
||||
.09:
|
||||
sub al,'0'
|
||||
; clc
|
||||
ret
|
||||
.AF:
|
||||
sub al,'A'-10
|
||||
; clc
|
||||
ret
|
||||
.FA:
|
||||
sub al,'a'-10
|
||||
; clc
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Find register in the table
|
||||
FindReg:
|
||||
mov edi,RegTable
|
||||
.FindReg:
|
||||
movzx ecx,byte [edi]
|
||||
stc
|
||||
jecxz .RegNotFound
|
||||
inc edi
|
||||
push esi edi ecx
|
||||
@@:
|
||||
lodsb
|
||||
or al,20h
|
||||
scasb
|
||||
loopz @B
|
||||
pop ecx edi esi
|
||||
lea edi,[edi+ecx+1]
|
||||
jnz .FindReg
|
||||
movzx edi,byte [edi-1]
|
||||
add esi,ecx
|
||||
.RegNotFound:
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Tokenize expressions
|
||||
ExprGetToken:
|
||||
lodsb
|
||||
cmp al,0
|
||||
jz .EndToken
|
||||
cmp al,' '
|
||||
jbe ExprGetToken
|
||||
cmp al,'|'
|
||||
jz .Or
|
||||
cmp al,'&'
|
||||
jz .And
|
||||
cmp al,'^'
|
||||
jz .Xor
|
||||
cmp al,'+'
|
||||
jz .Add
|
||||
cmp al,'-'
|
||||
jz .Sub
|
||||
cmp al,'*'
|
||||
jz .Mul
|
||||
cmp al,'/'
|
||||
jz .Div
|
||||
cmp al,'('
|
||||
jz .LP
|
||||
cmp al,')'
|
||||
jnz .NotSign
|
||||
.RP:
|
||||
mov al,TokenRP
|
||||
ret
|
||||
.Or:
|
||||
mov al,TokenOr
|
||||
ret
|
||||
.And:
|
||||
mov al,TokenAnd
|
||||
ret
|
||||
.Xor:
|
||||
mov al,TokenXor
|
||||
ret
|
||||
.Div:
|
||||
mov al,TokenDiv
|
||||
ret
|
||||
.EndToken:
|
||||
mov al,TokenEnd
|
||||
ret
|
||||
.Add:
|
||||
mov al,TokenAdd
|
||||
ret
|
||||
.Sub:
|
||||
mov al,TokenSub
|
||||
ret
|
||||
.Mul:
|
||||
mov al,TokenMul
|
||||
ret
|
||||
.LP:
|
||||
mov al,TokenLP
|
||||
ret
|
||||
.NotSign:
|
||||
dec esi
|
||||
call FindReg
|
||||
jc .RegNotFound
|
||||
mov al,TokenReg
|
||||
ret
|
||||
.RegNotFound:
|
||||
; test for symbol
|
||||
push esi
|
||||
@@:
|
||||
lodsb
|
||||
cmp al,' '
|
||||
ja @B
|
||||
push eax
|
||||
mov byte [esi],0
|
||||
xchg esi,[esp+4]
|
||||
call FindSymbolName
|
||||
mov edi,eax
|
||||
pop eax
|
||||
xchg esi,[esp]
|
||||
mov byte [esi],al
|
||||
jc @F
|
||||
add esp,4
|
||||
mov al,TokenHex
|
||||
ret
|
||||
@@:
|
||||
pop esi
|
||||
; test for hex number
|
||||
xor ecx,ecx
|
||||
xor edi,edi
|
||||
xor eax,eax
|
||||
@@:
|
||||
lodsb
|
||||
call IsHexDigit
|
||||
jc @F
|
||||
shl edi,4
|
||||
or edi,eax
|
||||
inc ecx
|
||||
jmp @B
|
||||
@@:
|
||||
dec esi
|
||||
jecxz .Err
|
||||
cmp ecx,8
|
||||
ja .Err
|
||||
mov al,TokenHex
|
||||
ret
|
||||
.Err:
|
||||
mov al,TokenErr
|
||||
mov esi,aParseError
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
ExprRead2:
|
||||
cmp al,TokenHex
|
||||
jz .Hex
|
||||
cmp al,TokenReg
|
||||
jz .Reg
|
||||
cmp al,TokenLP
|
||||
jz .LP
|
||||
mov al,TokenErr
|
||||
mov esi,aParseError
|
||||
ret
|
||||
.Hex:
|
||||
mov ebp,edi
|
||||
.Ret:
|
||||
jmp ExprGetToken
|
||||
.Reg:
|
||||
cmp edi,24
|
||||
jz .EIP
|
||||
sub edi,4
|
||||
jb .8LO
|
||||
sub edi,4
|
||||
jb .8HI
|
||||
sub edi,8
|
||||
jb .16
|
||||
mov ebp,[_EAX+edi*4]
|
||||
jmp .Ret
|
||||
.16:
|
||||
movzx ebp,word [_EAX+(edi+8)*4]
|
||||
jmp .Ret
|
||||
.8LO:
|
||||
movzx ebp,byte [_EAX+(edi+4)*4]
|
||||
jmp .Ret
|
||||
.8HI:
|
||||
movzx ebp,byte [_EAX+(edi+4)*4+1]
|
||||
jmp .Ret
|
||||
.EIP:
|
||||
mov ebp,[_EIP]
|
||||
jmp .Ret
|
||||
.LP:
|
||||
call ExprGetToken
|
||||
call ExprRead0
|
||||
cmp al,TokenErr
|
||||
jz @F
|
||||
cmp al,TokenRP
|
||||
jz ExprGetToken
|
||||
mov al,TokenErr
|
||||
mov esi,aParseError
|
||||
@@:
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
ExprRead1:
|
||||
call ExprRead2
|
||||
.1:
|
||||
cmp al,TokenMul
|
||||
jz .Mul
|
||||
cmp al,TokenDiv
|
||||
jz .Div
|
||||
ret
|
||||
.Mul:
|
||||
push ebp
|
||||
call ExprGetToken
|
||||
call ExprRead2
|
||||
pop edx
|
||||
; ebp := edx*ebp
|
||||
imul ebp,edx
|
||||
jmp .1
|
||||
.Div:
|
||||
push ebp
|
||||
call ExprGetToken
|
||||
call ExprRead2
|
||||
pop edx
|
||||
; ebp := edx/ebp
|
||||
test ebp,ebp
|
||||
jz .Div0
|
||||
push eax
|
||||
xor eax,eax
|
||||
xchg eax,edx
|
||||
div ebp
|
||||
xchg eax,ebp
|
||||
pop eax
|
||||
jmp .1
|
||||
.Div0:
|
||||
mov al,TokenErr
|
||||
mov esi,aDivByZero
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
ExprRead0:
|
||||
xor ebp,ebp
|
||||
cmp al,TokenOr
|
||||
jz .Or
|
||||
cmp al,TokenAnd
|
||||
jz .And
|
||||
cmp al,TokenXor
|
||||
jz .Xor
|
||||
cmp al,TokenAdd
|
||||
jz .Add
|
||||
cmp al,TokenSub
|
||||
jz .Sub
|
||||
call ExprRead1
|
||||
.1:
|
||||
cmp al,TokenOr
|
||||
jz .Or
|
||||
cmp al,TokenAnd
|
||||
jz .And
|
||||
cmp al,TokenXor
|
||||
jz .Xor
|
||||
cmp al,TokenAdd
|
||||
jz .Add
|
||||
cmp al,TokenSub
|
||||
jz .Sub
|
||||
ret
|
||||
.Or:
|
||||
push ebp
|
||||
call ExprGetToken
|
||||
call ExprRead1
|
||||
pop edx
|
||||
; ebp := edx | ebp
|
||||
or ebp,edx
|
||||
jmp .1
|
||||
.And:
|
||||
push ebp
|
||||
call ExprGetToken
|
||||
call ExprRead1
|
||||
pop edx
|
||||
; ebp := edx & ebp
|
||||
and ebp,edx
|
||||
jmp .1
|
||||
.Xor:
|
||||
push ebp
|
||||
call ExprGetToken
|
||||
call ExprRead1
|
||||
pop edx
|
||||
; ebp := edx ^ ebp
|
||||
xor ebp,edx
|
||||
jmp .1
|
||||
.Add:
|
||||
push ebp
|
||||
call ExprGetToken
|
||||
call ExprRead1
|
||||
pop edx
|
||||
; ebp := edx+ebp
|
||||
add ebp,edx
|
||||
jmp .1
|
||||
.Sub:
|
||||
push ebp
|
||||
call ExprGetToken
|
||||
call ExprRead1
|
||||
pop edx
|
||||
; ebp := edx-ebp
|
||||
xchg edx,ebp
|
||||
sub ebp,edx
|
||||
jmp .1
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; in: esi->expression
|
||||
; out: CF=1 if error
|
||||
; CF=0 and ebp=value if ok
|
||||
CalcExpression:
|
||||
call ExprGetToken
|
||||
call ExprRead0
|
||||
cmp al,TokenEnd
|
||||
jz .End
|
||||
cmp al,TokenErr
|
||||
jz @F
|
||||
mov esi,aParseError
|
||||
@@:
|
||||
call PutMessage
|
||||
stc
|
||||
ret
|
||||
.End:
|
||||
clc
|
||||
ret
|
||||
|
||||
GetArg:
|
||||
lodsb
|
||||
cmp al,' '
|
||||
ja GetArg
|
||||
mov byte [esi-1],0
|
||||
cmp al,0
|
||||
jnz .SkipSpaces
|
||||
dec esi
|
||||
|
||||
.SkipSpaces:
|
||||
lodsb
|
||||
cmp al,0
|
||||
jz @F
|
||||
cmp al,' '
|
||||
jbe .SkipSpaces
|
||||
@@:
|
||||
dec esi
|
||||
ret
|
119
programs/develop/koldbg/readme.txt
Normal file
119
programs/develop/koldbg/readme.txt
Normal file
@@ -0,0 +1,119 @@
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
koldbg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> KolibriOS. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Diamond). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> board.kolibrios.org <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - http://board.kolibrios.org/viewtopic.php?f=45&t=358, <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - mailto:diamondz@land.ru.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> koldbg <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
koldbg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> Backspace, Delete, Home, End, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "quit" (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> koldbg <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>).
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> load:
|
||||
load <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>> [<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>]
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
load /rd/1/example
|
||||
LOAD /rd/1/aclock w200 h200
|
||||
LoaD /hd0/1/menuetos/dosbox/dosbox
|
||||
<EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> load <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - "file not found", <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 0x<hex_<78><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> <<3C><><EFBFBD>> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fasm'<27><>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> load-symbols:
|
||||
load-symbols <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> load <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> .dbg (/rd/1/example.dbg <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>), <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "Symbols loaded", <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. koldbg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (mxp, mxp_lzo, mxp_nrv, mtappack) <20> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 'y' <20><><EFBFBD> <Enter>), <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "unpack" (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>! [<5B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Kolibri 0.6.5.0, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> kpack'<27><> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.]
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "terminate" (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "detach" (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "reload" (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>). <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
terminate
|
||||
load <last program name> <last program arguments>
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> koldbg) (<28> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20> load <last program name> <last program arguments>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> reload <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, load <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><>. <20><><EFBFBD><EFBFBD>) <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20> reload <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "help", <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> "h".
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
help <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
help <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
help <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
help
|
||||
help control
|
||||
h LoaD
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>:
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ("Running"/"Paused"), <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "No program loaded".
|
||||
- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> eip, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FPU/MMX. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hex-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: CF,PF,AF,ZF,SF,DF,OF: <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>) - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
d <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> d <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> u <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> u.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
d esi - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> esi (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> rep movsb)
|
||||
d esp - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
u eip - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> koldbg <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (8 32-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 8 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 8 8-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> eip; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16- <20> 8-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 32 <20><><EFBFBD>
|
||||
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +,-,*,/ (<28><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- [<5B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> dbg-<2D><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2^32.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
eax
|
||||
eip+2
|
||||
ecx-esi-1F
|
||||
al+AH*bl
|
||||
ax + 2* bH*(eip+a73)
|
||||
3*esi*di/EAX
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
? <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> r, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>:
|
||||
r <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>
|
||||
r <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>=<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>
|
||||
(<28> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>). <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 24 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> eip.
|
||||
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> load <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F7 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "s") <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> int 40h (<28> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sysenter <20> syscall) <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> F8 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "p") <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> rep/repz/repnz <20> <20><><EFBFBD><EFBFBD><EFBFBD> loop <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>/<2F><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> g <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> eip=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "g" <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "stop" (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, breakpoint(s), <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> eip=<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
bp <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "g" <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x86, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>).
|
||||
bpm <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bpm w <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bpmb/bpmw/bpmd <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. bpm <20> bpmb - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bpmw/bpmd <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28>.<2E>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 4).
|
||||
bpmb,bpmw,bpmd w <<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "bl", <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "bl <<3C><><EFBFBD><EFBFBD><EFBFBD>>". <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "bc <<3C><><EFBFBD><EFBFBD><EFBFBD>>", <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "bd <<3C><><EFBFBD><EFBFBD><EFBFBD>>", <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "be <<3C><><EFBFBD><EFBFBD><EFBFBD>>".
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
|
||||
1. <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> int3 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!). <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "int3 command at xxx"). <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> g <20>/<2F><><EFBFBD> bp. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> "g" <20> "bp", <20><> <20> "u","d","?" <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
2. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 16-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
3. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "d" <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
68
programs/develop/koldbg/sort.inc
Normal file
68
programs/develop/koldbg/sort.inc
Normal file
@@ -0,0 +1,68 @@
|
||||
; Sorting bunch of dwords, count = ecx, locating at address = edx,
|
||||
; comparison function at ebx
|
||||
; Destroy content of eax, ecx, esi, edi
|
||||
Sort:
|
||||
jecxz .Done
|
||||
mov eax,ecx
|
||||
@@:
|
||||
push eax
|
||||
call .Restore
|
||||
pop eax
|
||||
dec eax
|
||||
jnz @B
|
||||
@@:
|
||||
cmp ecx,1
|
||||
jz .Done
|
||||
mov esi,1
|
||||
mov edi,ecx
|
||||
call .Exchange
|
||||
dec ecx
|
||||
mov eax,1
|
||||
call .Restore
|
||||
jmp @B
|
||||
.Done:
|
||||
ret
|
||||
|
||||
.Exchange:
|
||||
push eax ecx
|
||||
mov eax,[edx+esi*4-4]
|
||||
mov ecx,[edx+edi*4-4]
|
||||
mov [edx+esi*4-4],ecx
|
||||
mov [edx+edi*4-4],eax
|
||||
pop ecx eax
|
||||
ret
|
||||
|
||||
.Restore:
|
||||
lea esi,[eax+eax]
|
||||
cmp esi,ecx
|
||||
ja .DonErr
|
||||
push esi
|
||||
mov esi,[edx+esi*4-4]
|
||||
mov edi,[edx+eax*4-4]
|
||||
call ebx
|
||||
pop esi
|
||||
ja .NeedXchg
|
||||
cmp esi,ecx
|
||||
jae .DonErr
|
||||
push esi
|
||||
mov esi,[edx+esi*4]
|
||||
mov edi,[edx+eax*4-4]
|
||||
call ebx
|
||||
pop esi
|
||||
jbe .DonErr
|
||||
.NeedXchg:
|
||||
cmp esi,ecx
|
||||
jz .DoXchg
|
||||
push esi
|
||||
mov edi,[edx+esi*4-4]
|
||||
mov esi,[edx+esi*4]
|
||||
call ebx
|
||||
pop esi
|
||||
sbb esi,-1
|
||||
.DoXchg:
|
||||
mov edi,eax
|
||||
call .Exchange
|
||||
mov eax,esi
|
||||
jmp .Restore
|
||||
.DonErr:
|
||||
ret
|
415
programs/develop/koldbg/symbols.inc
Normal file
415
programs/develop/koldbg/symbols.inc
Normal file
@@ -0,0 +1,415 @@
|
||||
|
||||
include 'sort.inc'
|
||||
|
||||
; compare proc for sorter
|
||||
Compare:
|
||||
cmpsd
|
||||
jnz @F
|
||||
cmp esi,edi
|
||||
@@:
|
||||
ret
|
||||
|
||||
; compare proc for sorter 2
|
||||
Compare2:
|
||||
cmpsd
|
||||
@@:
|
||||
cmpsb
|
||||
jnz @F
|
||||
cmp byte [esi-1],0
|
||||
jnz @B
|
||||
cmp esi,edi
|
||||
@@:
|
||||
ret
|
||||
|
||||
FreeSymbols:
|
||||
mov ecx,[Symbols]
|
||||
jecxz @F
|
||||
mcall 68,13
|
||||
and [Symbols],0
|
||||
and [NumSymbols],0
|
||||
@@:
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; Load symbols event
|
||||
|
||||
OnLoadSymbols.FileErr:
|
||||
test ebp,ebp
|
||||
jz @f
|
||||
mcall 68,13,edi
|
||||
ret
|
||||
@@:
|
||||
push eax
|
||||
mcall 68,13,edi
|
||||
mov esi,aCannotLoadFile
|
||||
call PutMessageNoDraw
|
||||
pop eax
|
||||
cmp eax,0x20
|
||||
jae .Unk
|
||||
mov esi,[LoadErrMsgs+eax*4]
|
||||
test esi,esi
|
||||
jnz PutMessage
|
||||
.Unk:
|
||||
mov esi,UnkErrMsg2
|
||||
jmp PutMessage
|
||||
|
||||
OnLoadSymbols:
|
||||
xor ebp,ebp
|
||||
; load input file
|
||||
mov esi,[CurArg]
|
||||
call FreeSymbols
|
||||
.Silent:
|
||||
; esi = ptr to symbols filename
|
||||
xor edi,edi
|
||||
cmp [NumSymbols],edi ; Any previously loaded symbols?
|
||||
je .LoadFile
|
||||
call FreeSymbols ; Yep, free them
|
||||
.LoadFile:
|
||||
mov ebx,FN70AttrBlock ; Get file attributes
|
||||
mov [ebx+21],esi
|
||||
mcall 70
|
||||
test eax,eax
|
||||
jnz .FileErr
|
||||
cmp dword [FileAttr+36],edi ; Is upper dword of filesize larger then 0?
|
||||
jnz .MemErr
|
||||
mov ecx,dword [FileAttr+32] ; Lower dword of filesize
|
||||
mcall 68,12 ; allocate the memory
|
||||
test eax,eax
|
||||
jz .MemErr
|
||||
mov edi,eax
|
||||
mov ebx,FN70ReadBlock
|
||||
mov [ebx+12],ecx
|
||||
mov [ebx+16],edi
|
||||
mov [ebx+21],esi
|
||||
mcall 70 ; Read the file into the allocated buffer
|
||||
test eax,eax
|
||||
jnz .FileErr
|
||||
|
||||
; calculate memory requirements to load debug symbols
|
||||
|
||||
lea edx,[ecx+edi-1] ; edx = EOF-1
|
||||
mov esi,edi
|
||||
xor ecx,ecx
|
||||
|
||||
mov [SymbolSection],1 ;;;;;
|
||||
.CalcLoop:
|
||||
cmp esi,edx
|
||||
jae .CalcDone
|
||||
cmp byte [esi],' ' ; skip spaces at the beginning of a line
|
||||
jne .NotSpace
|
||||
inc esi
|
||||
jmp .CalcLoop
|
||||
.NotSpace:
|
||||
cmp byte [esi],'.'
|
||||
jne .NotSection
|
||||
inc esi
|
||||
mov [SymbolSection],0
|
||||
cmp dword [esi],'text'
|
||||
je .SectionOK
|
||||
cmp dword [esi],'data'
|
||||
je .SectionOK
|
||||
cmp dword [esi],'bss '
|
||||
jne .SkipLine
|
||||
.SectionOK:
|
||||
inc [SymbolSection]
|
||||
jmp .SkipLine
|
||||
.NotSection:
|
||||
cmp [SymbolSection],0
|
||||
je .SkipLine
|
||||
|
||||
cmp word [esi],'0x'
|
||||
jne .SkipLine
|
||||
inc esi
|
||||
inc esi
|
||||
@@:
|
||||
cmp esi,edx
|
||||
jae .CalcDone
|
||||
lodsb
|
||||
or al,20h
|
||||
sub al,'0'
|
||||
cmp al,9
|
||||
jbe @B
|
||||
sub al,'a'-'0'-10
|
||||
cmp al,15
|
||||
jbe @B
|
||||
dec esi
|
||||
@@:
|
||||
cmp esi,edx
|
||||
ja .CalcDone
|
||||
lodsb
|
||||
cmp al,20h
|
||||
je @B
|
||||
jb .CalcLoop
|
||||
cmp al,9
|
||||
jz @B
|
||||
add ecx,12+1
|
||||
inc [NumSymbols]
|
||||
@@:
|
||||
inc ecx
|
||||
cmp esi,edx
|
||||
ja .CalcDone
|
||||
lodsb
|
||||
cmp al,0xD
|
||||
jz .CalcLoop
|
||||
cmp al,0xA
|
||||
jz .CalcLoop
|
||||
jmp @B
|
||||
|
||||
.SkipLine:
|
||||
cmp esi,edx
|
||||
jae .CalcDone
|
||||
lodsb
|
||||
cmp al,0xD
|
||||
jz .CalcLoop
|
||||
cmp al,0xA
|
||||
jz .CalcLoop
|
||||
jmp .SkipLine
|
||||
|
||||
.CalcDone:
|
||||
|
||||
; Allocate memory to place the debug symbols in
|
||||
mcall 68,12
|
||||
test eax,eax
|
||||
jnz .MemOK
|
||||
inc ebx
|
||||
mov ecx,edi
|
||||
mov al,68
|
||||
mcall
|
||||
.MemErr:
|
||||
mov esi,aNoMemory
|
||||
jmp PutMessage
|
||||
.MemOK:
|
||||
mov [Symbols],eax
|
||||
mov ebx,eax
|
||||
push edi
|
||||
mov esi,edi
|
||||
mov edi,[NumSymbols]
|
||||
lea ebp,[eax+edi*4]
|
||||
lea edi,[eax+edi*8]
|
||||
|
||||
; Actual loading of the debug symbols
|
||||
; esi->input, edx->EOF, ebx->ptrs, edi->names
|
||||
|
||||
mov [SymbolSection],1 ;;;;;
|
||||
.ReadLoop:
|
||||
cmp esi,edx
|
||||
jae .ReadDone
|
||||
cmp byte [esi],' '
|
||||
jne .NotSpace2
|
||||
inc esi
|
||||
jmp .ReadLoop
|
||||
.NotSpace2:
|
||||
cmp byte [esi],'.'
|
||||
jne .NotSection2
|
||||
inc esi
|
||||
mov [SymbolSection],0
|
||||
cmp dword [esi],'text'
|
||||
je .SectionOK2
|
||||
cmp dword [esi],'data'
|
||||
je .SectionOK2
|
||||
cmp dword [esi],'bss '
|
||||
jne .ReadLine
|
||||
.SectionOK2:
|
||||
inc [SymbolSection]
|
||||
jmp .ReadLine
|
||||
.NotSection2:
|
||||
cmp [SymbolSection],0
|
||||
je .ReadLine
|
||||
|
||||
cmp word [esi],'0x'
|
||||
jnz .ReadLine
|
||||
inc esi
|
||||
inc esi
|
||||
xor eax,eax
|
||||
xor ecx,ecx
|
||||
@@:
|
||||
shl ecx,4
|
||||
add ecx,eax
|
||||
cmp esi,edx
|
||||
jae .ReadDone
|
||||
lodsb
|
||||
or al,20h
|
||||
sub al,'0'
|
||||
cmp al,9
|
||||
jbe @B
|
||||
sub al,'a'-'0'-10
|
||||
cmp al,15
|
||||
jbe @B
|
||||
dec esi
|
||||
@@:
|
||||
cmp esi,edx
|
||||
ja .ReadDone
|
||||
lodsb
|
||||
cmp al,20h
|
||||
jz @B
|
||||
jb .ReadLoop
|
||||
cmp al,9
|
||||
jz @B
|
||||
mov dword [ebx],edi
|
||||
add ebx,4
|
||||
mov dword [ebp],edi
|
||||
add ebp,4
|
||||
mov dword [edi],ecx
|
||||
add edi,4
|
||||
stosb
|
||||
@@:
|
||||
xor eax,eax
|
||||
stosb
|
||||
cmp esi,edx
|
||||
ja .ReadDone
|
||||
lodsb
|
||||
cmp al,0xD
|
||||
jz .ReadLoop
|
||||
cmp al,0xA
|
||||
jz .ReadLoop
|
||||
mov byte [edi-1],al
|
||||
jmp @B
|
||||
|
||||
.ReadLine:
|
||||
cmp esi,edx
|
||||
jae .ReadDone
|
||||
lodsb
|
||||
cmp al,0xD
|
||||
jz .ReadLoop
|
||||
cmp al,0xA
|
||||
jz .ReadLoop
|
||||
jmp .ReadLine
|
||||
|
||||
.ReadDone:
|
||||
pop ecx
|
||||
mcall 68,13
|
||||
mov ecx,[NumSymbols]
|
||||
mov edx,[Symbols]
|
||||
mov ebx,Compare
|
||||
call Sort
|
||||
mov ecx,[NumSymbols]
|
||||
lea edx,[edx+ecx*4]
|
||||
mov ebx,Compare2
|
||||
call Sort
|
||||
mov esi,aSymbolsLoaded
|
||||
call PutMessage
|
||||
jmp DrawMessages;DrawDisAsm
|
||||
|
||||
;
|
||||
; in: EAX = address
|
||||
; out: ESI, CF
|
||||
FindSymbol:
|
||||
cmp [NumSymbols],0
|
||||
jnz @F
|
||||
.Ret0:
|
||||
xor esi,esi
|
||||
stc
|
||||
ret
|
||||
@@:
|
||||
push ebx ecx edx
|
||||
xor edx,edx
|
||||
mov esi,[Symbols]
|
||||
mov ecx,[NumSymbols]
|
||||
mov ebx,[esi]
|
||||
cmp [ebx],eax
|
||||
jz .DoneZ
|
||||
jb @F
|
||||
pop edx ecx ebx
|
||||
jmp .Ret0
|
||||
@@:
|
||||
; invariant: symbols_addr[edx] < eax < symbols_addr[ecx]
|
||||
; TODO: add meaningful label names
|
||||
.0:
|
||||
push edx
|
||||
.1:
|
||||
add edx,ecx
|
||||
sar edx,1
|
||||
cmp edx,[esp]
|
||||
jz .Done2
|
||||
mov ebx,[esi+edx*4]
|
||||
cmp [ebx],eax
|
||||
jz .Done
|
||||
ja .2
|
||||
mov [esp],edx
|
||||
jmp .1
|
||||
.2:
|
||||
mov ecx,edx
|
||||
pop edx
|
||||
jmp .0
|
||||
|
||||
.DoneCont:
|
||||
dec edx
|
||||
.Done:
|
||||
test edx,edx
|
||||
jz @F
|
||||
mov ebx,[esi+edx*4-4]
|
||||
cmp [ebx],eax
|
||||
jz .DoneCont
|
||||
@@:
|
||||
pop ecx
|
||||
.DoneZ:
|
||||
mov esi,[esi+edx*4]
|
||||
add esi,4
|
||||
pop edx ecx ebx
|
||||
clc
|
||||
ret
|
||||
.Done2:
|
||||
lea esi,[esi+edx*4]
|
||||
pop ecx edx ecx ebx
|
||||
stc
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
; in: esi->name
|
||||
; out: if found: CF = 0, EAX = value
|
||||
; otherwise CF = 1
|
||||
FindSymbolName:
|
||||
cmp [NumSymbols],0
|
||||
jnz @F
|
||||
.StcRet:
|
||||
stc
|
||||
ret
|
||||
@@:
|
||||
push ebx ecx edx edi
|
||||
push -1
|
||||
pop edx
|
||||
mov ebx,[Symbols]
|
||||
mov ecx,[NumSymbols]
|
||||
lea ebx,[ebx+ecx*4]
|
||||
; invariant: symbols_name[edx] < name < symbols_name[ecx]
|
||||
.0:
|
||||
push edx
|
||||
.1:
|
||||
add edx,ecx
|
||||
sar edx,1
|
||||
cmp edx,[esp]
|
||||
jz .Done2
|
||||
call .Cmp
|
||||
jz .Done
|
||||
jb .2
|
||||
mov [esp],edx
|
||||
jmp .1
|
||||
.2:
|
||||
mov ecx,edx
|
||||
pop edx
|
||||
jmp .0
|
||||
.Done:
|
||||
pop ecx
|
||||
.DoneZ:
|
||||
mov eax,[ebx+edx*4]
|
||||
mov eax,[eax]
|
||||
pop edi edx ecx ebx
|
||||
clc
|
||||
ret
|
||||
|
||||
.Done2:
|
||||
pop edx edi edx ecx ebx
|
||||
stc
|
||||
ret
|
||||
.Cmp:
|
||||
mov edi,[ebx+edx*4]
|
||||
push esi
|
||||
add edi,4
|
||||
@@:
|
||||
cmpsb
|
||||
jnz @F
|
||||
cmp byte [esi-1],0
|
||||
jnz @B
|
||||
@@:
|
||||
pop esi
|
||||
ret
|
22
programs/develop/koldbg/tools.inc
Normal file
22
programs/develop/koldbg/tools.inc
Normal file
@@ -0,0 +1,22 @@
|
||||
PGAlloc:
|
||||
; in: ecx=size
|
||||
; out: eax=pointer or NULL
|
||||
push ebx
|
||||
push 68
|
||||
pop eax
|
||||
push 12
|
||||
pop ebx
|
||||
int 40h
|
||||
pop ebx
|
||||
ret
|
||||
PGFree:
|
||||
; in: ecx=pointer
|
||||
; destroys eax
|
||||
push ebx
|
||||
push 68
|
||||
pop eax
|
||||
push 13
|
||||
pop ebx
|
||||
int 40h
|
||||
pop ebx
|
||||
ret
|
Reference in New Issue
Block a user