mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-19 01:43:45 +02:00
103 lines
1.8 KiB
ObjectPascal
103 lines
1.8 KiB
ObjectPascal
program BreakPointThread2Prg;
|
|
{$asmMode intel}
|
|
uses
|
|
{$IFDEF UNIX}
|
|
cthreads,
|
|
{$ENDIF}
|
|
sysutils, Classes;
|
|
|
|
type
|
|
|
|
{ TTestThread }
|
|
|
|
TTestThread = class(TThread)
|
|
procedure Execute; override;
|
|
end;
|
|
|
|
{ TTestThread2 }
|
|
|
|
TTestThread2 = class(TThread)
|
|
procedure Execute; override;
|
|
end;
|
|
|
|
|
|
var
|
|
T1, x, BreakDummy: Integer;
|
|
|
|
label
|
|
testasmlbl1;
|
|
|
|
{ TTestThread }
|
|
|
|
procedure TTestThread.Execute;
|
|
var
|
|
i: Integer;
|
|
t: array [0..5] of TTestThread2;
|
|
begin
|
|
for i := 0 to high(t) do
|
|
t[i] := TTestThread2.Create(False);
|
|
InterLockedIncrement(T1);
|
|
while not Terminated do
|
|
for i := 0 to high(t) do begin
|
|
t[i].WaitFor;
|
|
t[i].Free;
|
|
t[i] := TTestThread2.Create(False);
|
|
end;
|
|
end;
|
|
|
|
{ TTestThread2 }
|
|
|
|
procedure TTestThread2.Execute;
|
|
begin
|
|
//
|
|
end;
|
|
|
|
begin
|
|
TTestThread.Create(False);
|
|
TTestThread.Create(False);
|
|
TTestThread.Create(False);
|
|
TTestThread.Create(False);
|
|
TTestThread.Create(False);
|
|
while InterLockedExchangeAdd(T1, 0) < 4 do
|
|
sleep(10);
|
|
|
|
BreakDummy := 1;
|
|
|
|
asm
|
|
nop // TEST_BREAKPOINT=BrkMainBegin
|
|
xor eax, eax
|
|
xor ebx, ebx
|
|
add eax, 20
|
|
testasmlbl1:
|
|
sub eax, 20
|
|
add eax, 1 // TEST_BREAKPOINT=BrkMain0
|
|
add eax, 1
|
|
add eax, 1 // TEST_BREAKPOINT=BrkMain1
|
|
add eax, 1
|
|
add eax, 1 // TEST_BREAKPOINT=BrkMain2
|
|
add eax, 1
|
|
add eax, 1 // TEST_BREAKPOINT=BrkMain3
|
|
add eax, 1
|
|
add eax, 1 // TEST_BREAKPOINT=BrkMain4
|
|
add eax, 1
|
|
add eax, 1 // TEST_BREAKPOINT=BrkMain5
|
|
add eax, 1
|
|
add eax, 1 // TEST_BREAKPOINT=BrkMain6
|
|
add eax, 1
|
|
add eax, 1 // TEST_BREAKPOINT=BrkMain7
|
|
add eax, 1
|
|
add eax, 1 // TEST_BREAKPOINT=BrkMain8
|
|
add eax, 1
|
|
add eax, 1 // TEST_BREAKPOINT=BrkMain9
|
|
add eax, 1
|
|
|
|
add ebx, 1
|
|
jmp testasmlbl1
|
|
|
|
nop
|
|
nop // TEST_BREAKPOINT=BrkMainEnd
|
|
end;
|
|
|
|
end.
|
|
|