mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-30 15:40:16 +02:00
+ vector unit window
This commit is contained in:
parent
6bae9c8f6d
commit
6c2ea3f2b4
@ -188,6 +188,7 @@ const
|
|||||||
cmRegisters = 242;
|
cmRegisters = 242;
|
||||||
cmFPURegisters = 243;
|
cmFPURegisters = 243;
|
||||||
cmDoReload = 244;
|
cmDoReload = 244;
|
||||||
|
cmVectorRegisters = 245;
|
||||||
|
|
||||||
cmNotImplemented = 1000;
|
cmNotImplemented = 1000;
|
||||||
cmNewFromTemplate = 1001;
|
cmNewFromTemplate = 1001;
|
||||||
@ -405,6 +406,7 @@ const
|
|||||||
hcBreakPointList = hcShift+cmBreakpointList;
|
hcBreakPointList = hcShift+cmBreakpointList;
|
||||||
hcRegistersWindow = hcShift+cmRegisters;
|
hcRegistersWindow = hcShift+cmRegisters;
|
||||||
hcFPURegisters = hcShift+cmFPURegisters;
|
hcFPURegisters = hcShift+cmFPURegisters;
|
||||||
|
hcVectorRegisters = hcShift+cmVectorRegisters;
|
||||||
|
|
||||||
hcOpenAtCursor = hcShift+cmOpenAtCursor;
|
hcOpenAtCursor = hcShift+cmOpenAtCursor;
|
||||||
hcBrowseAtCursor = hcShift+cmBrowseAtCursor;
|
hcBrowseAtCursor = hcShift+cmBrowseAtCursor;
|
||||||
@ -472,7 +474,10 @@ implementation
|
|||||||
END.
|
END.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.18 2004-12-30 16:14:13 florian
|
Revision 1.19 2005-01-08 11:43:18 florian
|
||||||
|
+ vector unit window
|
||||||
|
|
||||||
|
Revision 1.18 2004/12/30 16:14:13 florian
|
||||||
* ide version to 1.0.0 changed
|
* ide version to 1.0.0 changed
|
||||||
|
|
||||||
Revision 1.17 2004/11/21 20:53:26 peter
|
Revision 1.17 2004/11/21 20:53:26 peter
|
||||||
|
@ -549,6 +549,8 @@ procedure UpdateDebugViews;
|
|||||||
{$endif NODEBUG}
|
{$endif NODEBUG}
|
||||||
If assigned(FPUWindow) then
|
If assigned(FPUWindow) then
|
||||||
FPUWindow^.Update;
|
FPUWindow^.Update;
|
||||||
|
If assigned(VectorWindow) then
|
||||||
|
VectorWindow^.Update;
|
||||||
DeskTop^.UnLock;
|
DeskTop^.UnLock;
|
||||||
{$ifdef SUPPORT_REMOTE}
|
{$ifdef SUPPORT_REMOTE}
|
||||||
PopStatus;
|
PopStatus;
|
||||||
@ -3665,7 +3667,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.59 2004-12-22 15:24:06 peter
|
Revision 1.60 2005-01-08 11:43:18 florian
|
||||||
|
+ vector unit window
|
||||||
|
|
||||||
|
Revision 1.59 2004/12/22 15:24:06 peter
|
||||||
* fixed NODEBUG
|
* fixed NODEBUG
|
||||||
* set default target to the default target of the compiler
|
* set default target to the default target of the compiler
|
||||||
|
|
||||||
|
@ -392,6 +392,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
W:=FPUWindow;
|
W:=FPUWindow;
|
||||||
end;
|
end;
|
||||||
|
hcVectorRegisters:
|
||||||
|
begin
|
||||||
|
if VectorWindow=nil then
|
||||||
|
begin
|
||||||
|
New(VectorWindow,Init);
|
||||||
|
Desktop^.Insert(VectorWindow);
|
||||||
|
end;
|
||||||
|
W:=VectorWindow;
|
||||||
|
end;
|
||||||
hcRegistersWindow:
|
hcRegistersWindow:
|
||||||
begin
|
begin
|
||||||
if RegistersWindow=nil then
|
if RegistersWindow=nil then
|
||||||
@ -550,6 +559,7 @@ begin
|
|||||||
(P^.HelpCtx=hcStackWindow) or
|
(P^.HelpCtx=hcStackWindow) or
|
||||||
(P^.HelpCtx=hcRegistersWindow) or
|
(P^.HelpCtx=hcRegistersWindow) or
|
||||||
(P^.HelpCtx=hcFPURegisters) or
|
(P^.HelpCtx=hcFPURegisters) or
|
||||||
|
(P^.HelpCtx=hcVectorRegisters) or
|
||||||
(P^.HelpCtx=hcWatchesWindow) or
|
(P^.HelpCtx=hcWatchesWindow) or
|
||||||
(P^.HelpCtx=hcBreakpointListWindow) or
|
(P^.HelpCtx=hcBreakpointListWindow) or
|
||||||
(P^.HelpCtx=hcASCIITableWindow)
|
(P^.HelpCtx=hcASCIITableWindow)
|
||||||
@ -950,7 +960,10 @@ end;
|
|||||||
END.
|
END.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.13 2004-12-29 20:12:25 florian
|
Revision 1.14 2005-01-08 11:43:18 florian
|
||||||
|
+ vector unit window
|
||||||
|
|
||||||
|
Revision 1.13 2004/12/29 20:12:25 florian
|
||||||
* packed removed for sparc and co.
|
* packed removed for sparc and co.
|
||||||
|
|
||||||
Revision 1.12 2004/12/22 15:24:07 peter
|
Revision 1.12 2004/12/22 15:24:07 peter
|
||||||
|
@ -89,6 +89,7 @@ type
|
|||||||
procedure DoAddWatch;
|
procedure DoAddWatch;
|
||||||
procedure DoShowRegisters;
|
procedure DoShowRegisters;
|
||||||
procedure DoShowFPU;
|
procedure DoShowFPU;
|
||||||
|
procedure DoShowVector;
|
||||||
function AskRecompileIfModified:boolean;
|
function AskRecompileIfModified:boolean;
|
||||||
procedure Messages;
|
procedure Messages;
|
||||||
procedure Calculator;
|
procedure Calculator;
|
||||||
@ -377,21 +378,23 @@ begin
|
|||||||
{$ifdef SUPPORT_REMOTE}
|
{$ifdef SUPPORT_REMOTE}
|
||||||
NewItem(menu_debug_remote,'', kbNoKey, cmTransferRemote, hcTransferRemote,
|
NewItem(menu_debug_remote,'', kbNoKey, cmTransferRemote, hcTransferRemote,
|
||||||
{$endif SUPPORT_REMOTE}
|
{$endif SUPPORT_REMOTE}
|
||||||
NewItem(menu_debug_registers,'', kbNoKey, cmRegisters, hcRegistersWindow,
|
|
||||||
NewItem(menu_debug_fpu_registers,'', kbNoKey, cmFPURegisters, hcRegistersWindow,
|
|
||||||
NewItem(menu_debug_addwatch,menu_key_debug_addwatch, kbCtrlF7, cmAddWatch, hcAddWatch,
|
NewItem(menu_debug_addwatch,menu_key_debug_addwatch, kbCtrlF7, cmAddWatch, hcAddWatch,
|
||||||
NewItem(menu_debug_watches,'', kbNoKey, cmWatches, hcWatchesWindow,
|
NewItem(menu_debug_watches,'', kbNoKey, cmWatches, hcWatchesWindow,
|
||||||
NewItem(menu_debug_breakpoint,menu_key_debug_breakpoint, kbCtrlF8, cmToggleBreakpoint, hcToggleBreakpoint,
|
NewItem(menu_debug_breakpoint,menu_key_debug_breakpoint, kbCtrlF8, cmToggleBreakpoint, hcToggleBreakpoint,
|
||||||
NewItem(menu_debug_breakpointlist,'', kbNoKey, cmBreakpointList, hcBreakpointList,
|
NewItem(menu_debug_breakpointlist,'', kbNoKey, cmBreakpointList, hcBreakpointList,
|
||||||
NewItem(menu_debug_callstack,menu_key_debug_callstack, kbCtrlF3, cmStack, hcStackWindow,
|
NewItem(menu_debug_callstack,menu_key_debug_callstack, kbCtrlF3, cmStack, hcStackWindow,
|
||||||
|
NewLine(
|
||||||
NewItem(menu_debug_disassemble,'', kbNoKey, cmDisassemble, hcStackWindow,
|
NewItem(menu_debug_disassemble,'', kbNoKey, cmDisassemble, hcStackWindow,
|
||||||
|
NewItem(menu_debug_registers,'', kbNoKey, cmRegisters, hcRegistersWindow,
|
||||||
|
NewItem(menu_debug_fpu_registers,'', kbNoKey, cmFPURegisters, hcFPURegisters,
|
||||||
|
NewItem(menu_debug_vector_registers,'', kbNoKey, cmVectorRegisters, hcVectorRegisters,
|
||||||
NewLine(
|
NewLine(
|
||||||
NewItem(menu_debug_gdbwindow,'', kbNoKey, cmOpenGDBWindow, hcOpenGDBWindow,
|
NewItem(menu_debug_gdbwindow,'', kbNoKey, cmOpenGDBWindow, hcOpenGDBWindow,
|
||||||
nil
|
nil
|
||||||
{$ifdef SUPPORT_REMOTE}
|
{$ifdef SUPPORT_REMOTE}
|
||||||
)
|
)
|
||||||
{$endif SUPPORT_REMOTE}
|
{$endif SUPPORT_REMOTE}
|
||||||
)))))))))))))),
|
)))))))))))))))),
|
||||||
NewSubMenu(menu_tools, hcToolsMenu, NewMenu(
|
NewSubMenu(menu_tools, hcToolsMenu, NewMenu(
|
||||||
NewItem(menu_tools_messages,menu_key_tools_messages, kbF11, cmToolsMessages, hcToolsMessages,
|
NewItem(menu_tools_messages,menu_key_tools_messages, kbF11, cmToolsMessages, hcToolsMessages,
|
||||||
NewItem(menu_tools_msgnext,menu_key_tools_msgnext, kbAltF8, cmToolsMsgNext, hcToolsMsgNext,
|
NewItem(menu_tools_msgnext,menu_key_tools_msgnext, kbAltF8, cmToolsMsgNext, hcToolsMsgNext,
|
||||||
@ -701,6 +704,7 @@ begin
|
|||||||
cmOpenGDBWindow : DoOpenGDBWindow;
|
cmOpenGDBWindow : DoOpenGDBWindow;
|
||||||
cmRegisters : DoShowRegisters;
|
cmRegisters : DoShowRegisters;
|
||||||
cmFPURegisters : DoShowFPU;
|
cmFPURegisters : DoShowFPU;
|
||||||
|
cmVectorRegisters : DoShowVector;
|
||||||
{ -- Options menu -- }
|
{ -- Options menu -- }
|
||||||
cmSwitchesMode : SetSwitchesMode;
|
cmSwitchesMode : SetSwitchesMode;
|
||||||
cmCompiler : DoCompilerSwitch;
|
cmCompiler : DoCompilerSwitch;
|
||||||
@ -1246,7 +1250,10 @@ end;
|
|||||||
END.
|
END.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.36 2005-01-07 21:52:23 florian
|
Revision 1.37 2005-01-08 11:43:18 florian
|
||||||
|
+ vector unit window
|
||||||
|
|
||||||
|
Revision 1.36 2005/01/07 21:52:23 florian
|
||||||
* proper stepping in disassembler window now possible
|
* proper stepping in disassembler window now possible
|
||||||
+ disassembler window to menu added
|
+ disassembler window to menu added
|
||||||
|
|
||||||
|
@ -172,6 +172,19 @@ begin
|
|||||||
{$endif NODEBUG}
|
{$endif NODEBUG}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TIDEApp.DoShowVector;
|
||||||
|
begin
|
||||||
|
{$ifdef NODEBUG}
|
||||||
|
NoDebugger;
|
||||||
|
{$else}
|
||||||
|
If not assigned(VectorWindow) then
|
||||||
|
InitVectorWindow
|
||||||
|
else
|
||||||
|
VectorWindow^.MakeFirst;
|
||||||
|
{$endif NODEBUG}
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TIDEApp.DoShowBreakpointList;
|
procedure TIDEApp.DoShowBreakpointList;
|
||||||
begin
|
begin
|
||||||
{$ifdef NODEBUG}
|
{$ifdef NODEBUG}
|
||||||
@ -245,7 +258,10 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.7 2005-01-07 21:52:23 florian
|
Revision 1.8 2005-01-08 11:43:18 florian
|
||||||
|
+ vector unit window
|
||||||
|
|
||||||
|
Revision 1.7 2005/01/07 21:52:23 florian
|
||||||
* proper stepping in disassembler window now possible
|
* proper stepping in disassembler window now possible
|
||||||
+ disassembler window to menu added
|
+ disassembler window to menu added
|
||||||
|
|
||||||
|
@ -86,6 +86,7 @@ begin
|
|||||||
hcStackWindow,
|
hcStackWindow,
|
||||||
hcRegistersWindow,
|
hcRegistersWindow,
|
||||||
hcFPURegisters,
|
hcFPURegisters,
|
||||||
|
hcVectorRegisters,
|
||||||
hcClipboardWindow,
|
hcClipboardWindow,
|
||||||
hcASCIITableWindow,
|
hcASCIITableWindow,
|
||||||
hcUserScreenWindow,
|
hcUserScreenWindow,
|
||||||
@ -258,7 +259,10 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.6 2004-11-08 20:28:26 peter
|
Revision 1.7 2005-01-08 11:43:18 florian
|
||||||
|
+ vector unit window
|
||||||
|
|
||||||
|
Revision 1.6 2004/11/08 20:28:26 peter
|
||||||
* Breakpoints are now deleted when removed from source, disabling is
|
* Breakpoints are now deleted when removed from source, disabling is
|
||||||
still possible from the breakpoint list
|
still possible from the breakpoint list
|
||||||
* COMPILER_1_0, FVISION, GABOR defines removed, only support new
|
* COMPILER_1_0, FVISION, GABOR defines removed, only support new
|
||||||
|
414
ide/fpregs.pas
414
ide/fpregs.pas
@ -129,10 +129,70 @@ uses
|
|||||||
destructor Done; virtual;
|
destructor Done; virtual;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
tssereg = record
|
||||||
|
case byte of
|
||||||
|
1 : (bytearray : array[0..15] of byte);
|
||||||
|
2 : (wordarray : array[0..7] of word);
|
||||||
|
3 : (dwordarray : array[0..3] of dword);
|
||||||
|
4 : (qwordarray : array[0..1] of qword);
|
||||||
|
5 : (twordfield : array[0..1] of qword);
|
||||||
|
6 : (singlearray : array[0..3] of single);
|
||||||
|
7 : (doublearray : array[0..1] of double);
|
||||||
|
end;
|
||||||
|
|
||||||
|
tmmxreg = record
|
||||||
|
case byte of
|
||||||
|
1 : (bytearray : array[0..7] of byte);
|
||||||
|
2 : (wordarray : array[0..3] of word);
|
||||||
|
3 : (dwordarray : array[0..1] of dword);
|
||||||
|
4 : (qwordfield : qword);
|
||||||
|
6 : (singlearray : array[0..1] of single);
|
||||||
|
end;
|
||||||
|
|
||||||
|
TVectorRegs = record
|
||||||
|
{$ifndef test_generic_cpu}
|
||||||
|
{$ifdef I386}
|
||||||
|
xmm : array[0..7] of string;
|
||||||
|
mmx : array[0..7] of string;
|
||||||
|
mxcsr : string;
|
||||||
|
{$endif I386}
|
||||||
|
{$endif not test_generic_cpu}
|
||||||
|
{$ifndef cpu_known}
|
||||||
|
vreg : array [0..MaxRegs-1] of string;
|
||||||
|
{$endif not cpu_known}
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
PVectorView = ^TVectorView;
|
||||||
|
TVectorView = object(TView)
|
||||||
|
NewReg,OldReg : TVectorRegs;
|
||||||
|
InDraw : boolean;
|
||||||
|
GDBCount : longint;
|
||||||
|
{$ifndef cpu_known}
|
||||||
|
UseInfoFloat : boolean;
|
||||||
|
{$endif not cpu_known}
|
||||||
|
constructor Init(var Bounds: TRect);
|
||||||
|
procedure Draw;virtual;
|
||||||
|
destructor Done; virtual;
|
||||||
|
end;
|
||||||
|
|
||||||
|
PVectorWindow = ^TVectorWindow;
|
||||||
|
TVectorWindow = Object(TFPDlgWindow)
|
||||||
|
RV : PVectorView;
|
||||||
|
Constructor Init;
|
||||||
|
constructor Load(var S: TStream);
|
||||||
|
procedure Store(var S: TStream);
|
||||||
|
procedure Update; virtual;
|
||||||
|
destructor Done; virtual;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure InitRegistersWindow;
|
procedure InitRegistersWindow;
|
||||||
procedure DoneRegistersWindow;
|
procedure DoneRegistersWindow;
|
||||||
procedure InitFPUWindow;
|
procedure InitFPUWindow;
|
||||||
procedure DoneFPUWindow;
|
procedure DoneFPUWindow;
|
||||||
|
procedure InitVectorWindow;
|
||||||
|
procedure DoneVectorWindow;
|
||||||
|
|
||||||
procedure RegisterFPRegsViews;
|
procedure RegisterFPRegsViews;
|
||||||
|
|
||||||
@ -146,9 +206,7 @@ uses
|
|||||||
{$endif NODEBUG}
|
{$endif NODEBUG}
|
||||||
App,Menus,
|
App,Menus,
|
||||||
WViews,WEditor,
|
WViews,WEditor,
|
||||||
{$ifdef powerpc}
|
wutils,
|
||||||
wutils, { for inttostr }
|
|
||||||
{$endif powerpc}
|
|
||||||
FPConst,FPVars,
|
FPConst,FPVars,
|
||||||
FPString,
|
FPString,
|
||||||
FPDebug;
|
FPDebug;
|
||||||
@ -183,6 +241,13 @@ Const
|
|||||||
Store: @TFPUView.Store
|
Store: @TFPUView.Store
|
||||||
);
|
);
|
||||||
|
|
||||||
|
RVectorView: TStreamRec = (
|
||||||
|
ObjType: 1715;
|
||||||
|
VmtLink: Ofs(TypeOf(TVectorView)^);
|
||||||
|
Load: @TVectorView.Load;
|
||||||
|
Store: @TVectorView.Store
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
{****************************************************************************
|
{****************************************************************************
|
||||||
TRegistersView
|
TRegistersView
|
||||||
@ -1025,6 +1090,320 @@ Const
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
{****************************************************************************
|
||||||
|
TVectorView
|
||||||
|
****************************************************************************}
|
||||||
|
|
||||||
|
function GetVectorRegs(var rs : TVectorRegs
|
||||||
|
{$ifndef cpu_known}
|
||||||
|
; UseInfoFloat : boolean
|
||||||
|
{$endif not cpu_known}
|
||||||
|
) : boolean;
|
||||||
|
|
||||||
|
var
|
||||||
|
p,po : pchar;
|
||||||
|
p1 : pchar;
|
||||||
|
{$ifndef NODEBUG}
|
||||||
|
reg,value : string;
|
||||||
|
buffer : array[0..255] of char;
|
||||||
|
v : string;
|
||||||
|
res : cardinal;
|
||||||
|
i : longint;
|
||||||
|
err : word;
|
||||||
|
{$endif}
|
||||||
|
|
||||||
|
begin
|
||||||
|
GetVectorRegs:=false;
|
||||||
|
{$ifndef NODEBUG}
|
||||||
|
{$ifndef cpu_known}
|
||||||
|
if UseInfoFloat then
|
||||||
|
begin
|
||||||
|
Debugger^.Command('info vector');
|
||||||
|
if Debugger^.Error then
|
||||||
|
begin
|
||||||
|
UseInfofloat:=false;
|
||||||
|
Debugger^.Command('info all');
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
{$endif not cpu_known}
|
||||||
|
Debugger^.Command('info vector');
|
||||||
|
if Debugger^.Error then
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
po:=StrNew(Debugger^.GetOutput);
|
||||||
|
p:=po;
|
||||||
|
{$ifndef cpu_known}
|
||||||
|
i:=0;
|
||||||
|
{$endif not cpu_known}
|
||||||
|
if assigned(p) then
|
||||||
|
begin
|
||||||
|
fillchar(rs,sizeof(rs),0);
|
||||||
|
p1:=strscan(p,' ');
|
||||||
|
while assigned(p1) do
|
||||||
|
begin
|
||||||
|
strlcopy(buffer,p,p1-p);
|
||||||
|
reg:=strpas(buffer);
|
||||||
|
{$ifndef cpu_known}
|
||||||
|
p1:=strscan(p,#10);
|
||||||
|
if assigned(p1) then
|
||||||
|
begin
|
||||||
|
strlcopy(buffer,p,p1-p);
|
||||||
|
rs.freg[i]:=ExtractTabs(strpas(buffer),8);
|
||||||
|
if i<MaxRegs-1 then
|
||||||
|
inc(i);
|
||||||
|
end;
|
||||||
|
{$else cpu_known}
|
||||||
|
p:=p1;
|
||||||
|
while p^=' ' do
|
||||||
|
inc(p);
|
||||||
|
if p^='$' then
|
||||||
|
p1:=strscan(p,#9)
|
||||||
|
else
|
||||||
|
p1:=strscan(p,#10);
|
||||||
|
strlcopy(buffer,p,p1-p);
|
||||||
|
v:=strpas(buffer);
|
||||||
|
for i:=1 to length(v) do
|
||||||
|
if v[i]=#9 then
|
||||||
|
v[i]:=' ';
|
||||||
|
val(v,res,err);
|
||||||
|
{$ifdef i386}
|
||||||
|
if reg[1]='x' then
|
||||||
|
for i:=0 to 7 do
|
||||||
|
begin
|
||||||
|
if reg='xmm'+inttostr(i) then
|
||||||
|
rs.xmm[i]:=v
|
||||||
|
end
|
||||||
|
else if reg='mxcsr' then
|
||||||
|
rs.mxcsr:=v
|
||||||
|
else if reg[1]='m' then
|
||||||
|
for i:=0 to 7 do
|
||||||
|
begin
|
||||||
|
if reg='mm'+inttostr(i) then
|
||||||
|
rs.mmx[i]:=v;
|
||||||
|
end;
|
||||||
|
{$endif i386}
|
||||||
|
{$ifdef powerpc}
|
||||||
|
{ !!!! fixme }
|
||||||
|
if reg[1]='v' then
|
||||||
|
for i:=0 to 31 do
|
||||||
|
if reg='v'+inttostr(i) then
|
||||||
|
rs.f[i]:=v;
|
||||||
|
{$endif powerpc}
|
||||||
|
{$endif cpu_known}
|
||||||
|
p:=strscan(p1,#10);
|
||||||
|
if assigned(p) then
|
||||||
|
begin
|
||||||
|
p1:=strscan(p,' ');
|
||||||
|
inc(p);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
{ free allocated memory }
|
||||||
|
strdispose(po);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
{ do not open a messagebox for such errors }
|
||||||
|
Debugger^.got_error:=false;
|
||||||
|
GetVectorRegs:=true;
|
||||||
|
{$endif}
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TVectorView.Init(var Bounds: TRect);
|
||||||
|
|
||||||
|
begin
|
||||||
|
inherited init(Bounds);
|
||||||
|
GrowMode:=gfGrowHiX or GfGrowHiY;
|
||||||
|
InDraw:=false;
|
||||||
|
FillChar(OldReg,Sizeof(oldreg),#0);
|
||||||
|
FillChar(NewReg,Sizeof(newreg),#0);
|
||||||
|
GDBCount:=-1;
|
||||||
|
{$ifndef cpu_known}
|
||||||
|
UseInfoFloat:=true;
|
||||||
|
{$endif not cpu_known}
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVectorView.Draw;
|
||||||
|
|
||||||
|
var
|
||||||
|
rs : tVectorregs;
|
||||||
|
top : byte;
|
||||||
|
color :byte;
|
||||||
|
ok : boolean;
|
||||||
|
i : byte;
|
||||||
|
const
|
||||||
|
TypeStr : Array[0..3] of string[6] =
|
||||||
|
('Valid ','Zero ','Spec ','Empty ');
|
||||||
|
|
||||||
|
procedure SetColor(Const x,y : string);
|
||||||
|
begin
|
||||||
|
if x=y then
|
||||||
|
color:=7
|
||||||
|
else
|
||||||
|
color:=8;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure SetIColor(Const x,y : cardinal);
|
||||||
|
begin
|
||||||
|
if x=y then
|
||||||
|
color:=7
|
||||||
|
else
|
||||||
|
color:=8;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
inherited draw;
|
||||||
|
{$ifdef NODEBUG}
|
||||||
|
WriteStr(1,0,'<no values available>',7);
|
||||||
|
{$else NODEBUG}
|
||||||
|
If not assigned(Debugger) then
|
||||||
|
begin
|
||||||
|
WriteStr(1,0,'<no values available>',7);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if InDraw then
|
||||||
|
exit;
|
||||||
|
InDraw:=true;
|
||||||
|
if GDBCount<>Debugger^.RunCount then
|
||||||
|
begin
|
||||||
|
OldReg:=NewReg;
|
||||||
|
OK:=GetVectorRegs(rs
|
||||||
|
{$ifndef cpu_known}
|
||||||
|
,UseInfoFloat
|
||||||
|
{$endif not cpu_known}
|
||||||
|
);
|
||||||
|
NewReg:=rs;
|
||||||
|
GDBCount:=Debugger^.RunCount;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
rs:=newreg;
|
||||||
|
OK:=true;
|
||||||
|
end;
|
||||||
|
if OK then
|
||||||
|
begin
|
||||||
|
{$ifdef cpu_known}
|
||||||
|
{$ifdef i386}
|
||||||
|
for i:=0 to 7 do
|
||||||
|
begin
|
||||||
|
SetColor(rs.xmm[i],OldReg.xmm[i]);
|
||||||
|
WriteStr(1,i,'xmm'+IntToStr(i)+' '+rs.xmm[i],color);
|
||||||
|
end;
|
||||||
|
|
||||||
|
SetColor(rs.mxcsr,OldReg.mxcsr);
|
||||||
|
WriteStr(1,i,'mxcsr'+IntToStr(i)+' '+rs.mxcsr,color);
|
||||||
|
|
||||||
|
for i:=0 to 7 do
|
||||||
|
begin
|
||||||
|
SetColor(rs.mmx[i],OldReg.mmx[i]);
|
||||||
|
WriteStr(1,i+8,'mmx'+IntToStr(i)+' '+rs.mmx[i],color);
|
||||||
|
end;
|
||||||
|
{$endif i386}
|
||||||
|
{$ifdef powerpc}
|
||||||
|
for i:=0 to 31 do
|
||||||
|
begin
|
||||||
|
SetColor(rs.f[i],OldReg.f[i]);
|
||||||
|
if i<10 then
|
||||||
|
WriteStr(1,i,'f'+IntToStr(i)+' '+rs.f[i],color)
|
||||||
|
else
|
||||||
|
WriteStr(1,i,'f'+IntToStr(i)+' '+rs.f[i],color);
|
||||||
|
end;
|
||||||
|
{$endif powerpc}
|
||||||
|
{$else not cpu_known}
|
||||||
|
for i:=0 to MaxRegs-1 do
|
||||||
|
begin
|
||||||
|
SetColor(rs.freg[i],OldReg.freg[i]);
|
||||||
|
WriteStr(1,i,rs.freg[i],color);
|
||||||
|
end;
|
||||||
|
{$endif cpu_known}
|
||||||
|
end
|
||||||
|
else
|
||||||
|
WriteStr(0,0,'<debugger error>',7);
|
||||||
|
InDraw:=false;
|
||||||
|
{$endif NODEBUG}
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TVectorView.Done;
|
||||||
|
|
||||||
|
begin
|
||||||
|
inherited done;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{****************************************************************************
|
||||||
|
TVectorWindow
|
||||||
|
****************************************************************************}
|
||||||
|
|
||||||
|
constructor TVectorWindow.Init;
|
||||||
|
|
||||||
|
var
|
||||||
|
R : TRect;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Desktop^.GetExtent(R);
|
||||||
|
{$ifdef i386}
|
||||||
|
R.A.X:=R.B.X-60;
|
||||||
|
R.B.Y:=R.A.Y+19;
|
||||||
|
{$endif i386}
|
||||||
|
{$ifdef m68k}
|
||||||
|
R.A.X:=R.B.X-60;
|
||||||
|
R.B.Y:=R.A.Y+14;
|
||||||
|
{$endif m68k}
|
||||||
|
{$ifdef powerpc}
|
||||||
|
R.A.X:=R.B.X-60;
|
||||||
|
R.B.Y:=R.A.Y+33;
|
||||||
|
{$endif powerpc}
|
||||||
|
{$ifndef cpu_known}
|
||||||
|
R.A.X:=R.B.X-60;
|
||||||
|
R.B.Y:=R.A.Y+33;
|
||||||
|
{$endif cpu_known}
|
||||||
|
inherited Init(R,dialog_Vector, wnNoNumber);
|
||||||
|
Flags:=wfClose or wfMove or wfgrow;
|
||||||
|
Palette:=wpCyanWindow;
|
||||||
|
HelpCtx:=hcVectorRegisters;
|
||||||
|
R.Assign(1,1,Size.X-2,Size.Y-2);
|
||||||
|
RV:=new(PVectorView,init(R));
|
||||||
|
Insert(RV);
|
||||||
|
If assigned(VectorWindow) then
|
||||||
|
dispose(VectorWindow,done);
|
||||||
|
VectorWindow:=@Self;
|
||||||
|
Update;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TVectorWindow.Load(var S: TStream);
|
||||||
|
|
||||||
|
begin
|
||||||
|
inherited load(S);
|
||||||
|
GetSubViewPtr(S,RV);
|
||||||
|
If assigned(VectorWindow) then
|
||||||
|
dispose(VectorWindow,done);
|
||||||
|
VectorWindow:=@Self;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVectorWindow.Store(var S: TStream);
|
||||||
|
|
||||||
|
begin
|
||||||
|
inherited Store(s);
|
||||||
|
PutSubViewPtr(S,RV);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TVectorWindow.Update;
|
||||||
|
|
||||||
|
begin
|
||||||
|
ReDraw;
|
||||||
|
end;
|
||||||
|
|
||||||
|
destructor TVectorWindow.Done;
|
||||||
|
|
||||||
|
begin
|
||||||
|
VectorWindow:=nil;
|
||||||
|
inherited done;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure InitRegistersWindow;
|
procedure InitRegistersWindow;
|
||||||
begin
|
begin
|
||||||
if RegistersWindow=nil then
|
if RegistersWindow=nil then
|
||||||
@ -1034,6 +1413,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure DoneRegistersWindow;
|
procedure DoneRegistersWindow;
|
||||||
begin
|
begin
|
||||||
if assigned(RegistersWindow) then
|
if assigned(RegistersWindow) then
|
||||||
@ -1043,6 +1423,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure InitFPUWindow;
|
procedure InitFPUWindow;
|
||||||
begin
|
begin
|
||||||
if FPUWindow=nil then
|
if FPUWindow=nil then
|
||||||
@ -1052,6 +1433,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure DoneFPUWindow;
|
procedure DoneFPUWindow;
|
||||||
begin
|
begin
|
||||||
if assigned(FPUWindow) then
|
if assigned(FPUWindow) then
|
||||||
@ -1062,12 +1444,33 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure InitVectorWindow;
|
||||||
|
begin
|
||||||
|
if VectorWindow=nil then
|
||||||
|
begin
|
||||||
|
new(VectorWindow,init);
|
||||||
|
DeskTop^.Insert(VectorWindow);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure DoneVectorWindow;
|
||||||
|
begin
|
||||||
|
if assigned(VectorWindow) then
|
||||||
|
begin
|
||||||
|
DeskTop^.Delete(VectorWindow);
|
||||||
|
VectorWindow:=nil;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure RegisterFPRegsViews;
|
procedure RegisterFPRegsViews;
|
||||||
begin
|
begin
|
||||||
RegisterType(RRegistersWindow);
|
RegisterType(RRegistersWindow);
|
||||||
RegisterType(RRegistersView);
|
RegisterType(RRegistersView);
|
||||||
RegisterType(RFPUWindow);
|
RegisterType(RFPUWindow);
|
||||||
RegisterType(RFPUView);
|
RegisterType(RFPUView);
|
||||||
|
RegisterType(RVectorView);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
@ -1075,7 +1478,10 @@ end.
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.5 2004-12-22 15:24:07 peter
|
Revision 1.6 2005-01-08 11:43:18 florian
|
||||||
|
+ vector unit window
|
||||||
|
|
||||||
|
Revision 1.5 2004/12/22 15:24:07 peter
|
||||||
* fixed NODEBUG
|
* fixed NODEBUG
|
||||||
* set default target to the default target of the compiler
|
* set default target to the default target of the compiler
|
||||||
|
|
||||||
|
@ -109,6 +109,7 @@ const
|
|||||||
menu_debug_remote = '~S~end to remote';
|
menu_debug_remote = '~S~end to remote';
|
||||||
menu_debug_registers = '~R~egisters';
|
menu_debug_registers = '~R~egisters';
|
||||||
menu_debug_fpu_registers = '~F~loating Point Unit';
|
menu_debug_fpu_registers = '~F~loating Point Unit';
|
||||||
|
menu_debug_vector_registers = '~V~ector Unit';
|
||||||
menu_debug_addwatch = '~A~dd Watch';
|
menu_debug_addwatch = '~A~dd Watch';
|
||||||
menu_debug_watches = '~W~atches';
|
menu_debug_watches = '~W~atches';
|
||||||
menu_debug_breakpointlist = 'Breakpoint ~L~ist';
|
menu_debug_breakpointlist = 'Breakpoint ~L~ist';
|
||||||
@ -327,6 +328,7 @@ const
|
|||||||
dialog_registers = 'Register View';
|
dialog_registers = 'Register View';
|
||||||
|
|
||||||
dialog_fpu = 'FPU View';
|
dialog_fpu = 'FPU View';
|
||||||
|
dialog_vector = 'Vector Unit View';
|
||||||
|
|
||||||
dialog_callstack = 'Call Stack';
|
dialog_callstack = 'Call Stack';
|
||||||
|
|
||||||
@ -1061,7 +1063,10 @@ const
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.26 2005-01-07 21:52:23 florian
|
Revision 1.27 2005-01-08 11:43:18 florian
|
||||||
|
+ vector unit window
|
||||||
|
|
||||||
|
Revision 1.26 2005/01/07 21:52:23 florian
|
||||||
* proper stepping in disassembler window now possible
|
* proper stepping in disassembler window now possible
|
||||||
+ disassembler window to menu added
|
+ disassembler window to menu added
|
||||||
|
|
||||||
|
@ -67,6 +67,7 @@ const ClipboardWindow : PClipboardWindow = nil;
|
|||||||
StackWindow : PStackWindow = nil;
|
StackWindow : PStackWindow = nil;
|
||||||
RegistersWindow : PRegistersWindow = nil;
|
RegistersWindow : PRegistersWindow = nil;
|
||||||
FPUWindow : PFPUWindow = nil;
|
FPUWindow : PFPUWindow = nil;
|
||||||
|
VectorWindow : PVectorWindow = nil;
|
||||||
{$endif NODEBUG}
|
{$endif NODEBUG}
|
||||||
UserScreenWindow : PScreenWindow = nil;
|
UserScreenWindow : PScreenWindow = nil;
|
||||||
|
|
||||||
@ -127,7 +128,10 @@ implementation
|
|||||||
END.
|
END.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.10 2004-12-22 15:24:07 peter
|
Revision 1.11 2005-01-08 11:43:18 florian
|
||||||
|
+ vector unit window
|
||||||
|
|
||||||
|
Revision 1.10 2004/12/22 15:24:07 peter
|
||||||
* fixed NODEBUG
|
* fixed NODEBUG
|
||||||
* set default target to the default target of the compiler
|
* set default target to the default target of the compiler
|
||||||
|
|
||||||
|
@ -675,6 +675,7 @@ begin
|
|||||||
(P^.HelpCtx=hcWatchesWindow) or
|
(P^.HelpCtx=hcWatchesWindow) or
|
||||||
(P^.HelpCtx=hcRegistersWindow) or
|
(P^.HelpCtx=hcRegistersWindow) or
|
||||||
(P^.HelpCtx=hcFPURegisters) or
|
(P^.HelpCtx=hcFPURegisters) or
|
||||||
|
(P^.HelpCtx=hcVectorRegisters) or
|
||||||
(P^.HelpCtx=hcStackWindow) or
|
(P^.HelpCtx=hcStackWindow) or
|
||||||
(P^.HelpCtx=hcBreakpointListWindow) or
|
(P^.HelpCtx=hcBreakpointListWindow) or
|
||||||
(P^.HelpCtx=hcASCIITableWindow)
|
(P^.HelpCtx=hcASCIITableWindow)
|
||||||
@ -737,6 +738,7 @@ begin
|
|||||||
(P^.HelpCtx <> hcWatchesWindow) and
|
(P^.HelpCtx <> hcWatchesWindow) and
|
||||||
(P^.HelpCtx <> hcStackWindow) and
|
(P^.HelpCtx <> hcStackWindow) and
|
||||||
(P^.HelpCtx <> hcRegistersWindow) and
|
(P^.HelpCtx <> hcRegistersWindow) and
|
||||||
|
(P^.HelpCtx <> hcVectorRegisters) and
|
||||||
(P^.HelpCtx <> hcFPURegisters);
|
(P^.HelpCtx <> hcFPURegisters);
|
||||||
end;
|
end;
|
||||||
begin
|
begin
|
||||||
@ -1907,6 +1909,7 @@ begin
|
|||||||
(F^.HelpCtx = hcWatchesWindow) or
|
(F^.HelpCtx = hcWatchesWindow) or
|
||||||
(F^.HelpCtx = hcStackWindow) or
|
(F^.HelpCtx = hcStackWindow) or
|
||||||
(F^.HelpCtx = hcRegistersWindow) or
|
(F^.HelpCtx = hcRegistersWindow) or
|
||||||
|
(F^.HelpCtx = hcVectorRegisters) or
|
||||||
(F^.HelpCtx = hcFPURegisters)) do
|
(F^.HelpCtx = hcFPURegisters)) do
|
||||||
F:=F^.NextView;
|
F:=F^.NextView;
|
||||||
if F<>@Self then
|
if F<>@Self then
|
||||||
@ -4490,7 +4493,10 @@ end;
|
|||||||
END.
|
END.
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.54 2005-01-07 19:09:28 florian
|
Revision 1.55 2005-01-08 11:43:18 florian
|
||||||
|
+ vector unit window
|
||||||
|
|
||||||
|
Revision 1.54 2005/01/07 19:09:28 florian
|
||||||
* highlight keywords of all language modes
|
* highlight keywords of all language modes
|
||||||
|
|
||||||
Revision 1.53 2004/12/22 15:24:07 peter
|
Revision 1.53 2004/12/22 15:24:07 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user