mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-14 07:59:27 +02:00
* Small adaptions to use the ATT parser a little bit more.
This commit is contained in:
parent
dbeb47f3bc
commit
9fcc870caf
@ -123,6 +123,7 @@ procedure st1(stack_size:longint);[public,alias: 'STACKCHECK'];
|
||||
begin
|
||||
{ called when trying to get local stack }
|
||||
{ if the compiler directive $S is set }
|
||||
{$ASMMODE DIRECT}
|
||||
asm
|
||||
movl stack_size,%ebx
|
||||
movl %esp,%eax
|
||||
@ -130,23 +131,24 @@ begin
|
||||
{$ifdef SYSTEMDEBUG}
|
||||
movl U_SYSOS2_LOWESTSTACK,%ebx
|
||||
cmpl %eax,%ebx
|
||||
jb .Lis_not_lowest
|
||||
jb Lis_not_lowest
|
||||
movl %eax,U_SYSOS2_LOWESTSTACK
|
||||
.Lis_not_lowest:
|
||||
Lis_not_lowest:
|
||||
{$endif SYSTEMDEBUG}
|
||||
cmpb $2,U_SYSOS2_OS_MODE
|
||||
jne .Lrunning_in_dos
|
||||
jne Lrunning_in_dos
|
||||
movl U_SYSOS2_STACKBOTTOM,%ebx
|
||||
jmp .Lrunning_in_os2
|
||||
.Lrunning_in_dos:
|
||||
jmp Lrunning_in_os2
|
||||
Lrunning_in_dos:
|
||||
movl __heap_brk,%ebx
|
||||
.Lrunning_in_os2:
|
||||
Lrunning_in_os2:
|
||||
cmpl %eax,%ebx
|
||||
jae .Lshort_on_stack
|
||||
jae Lshort_on_stack
|
||||
leave
|
||||
ret $4
|
||||
.Lshort_on_stack:
|
||||
Lshort_on_stack:
|
||||
end ['EAX','EBX'];
|
||||
{$ASMMODE ATT}
|
||||
{ this needs a local variable }
|
||||
{ so the function called itself !! }
|
||||
{ Writeln('low in stack ');}
|
||||
@ -170,28 +172,22 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function paramcount:longint;
|
||||
|
||||
begin
|
||||
asm
|
||||
movl _argc,%eax
|
||||
decl %eax
|
||||
leave
|
||||
ret
|
||||
end ['EAX'];
|
||||
end;
|
||||
{$asmmode direct}
|
||||
function paramcount:longint;assembler;
|
||||
|
||||
asm
|
||||
movl _argc,%eax
|
||||
decl %eax
|
||||
end ['EAX'];
|
||||
|
||||
function paramstr(l:longint):string;
|
||||
|
||||
function args:pointer;
|
||||
function args:pointer;assembler;
|
||||
|
||||
begin
|
||||
asm
|
||||
movl _argv,%eax
|
||||
leave
|
||||
ret
|
||||
end ['EAX'];
|
||||
end;
|
||||
asm
|
||||
movl _argv,%eax
|
||||
end ['EAX'];
|
||||
|
||||
var p:^Pchar;
|
||||
|
||||
@ -204,6 +200,8 @@ begin
|
||||
else paramstr:='';
|
||||
end;
|
||||
|
||||
{$asmmode att}
|
||||
|
||||
procedure randomize;
|
||||
|
||||
var hl:longint;
|
||||
@ -239,15 +237,13 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function getheapstart:pointer;
|
||||
{$ASMMODE direct}
|
||||
function getheapstart:pointer;assembler;
|
||||
|
||||
begin
|
||||
asm
|
||||
movl __heap_base,%eax
|
||||
leave
|
||||
ret
|
||||
end ['EAX'];
|
||||
end;
|
||||
asm
|
||||
movl __heap_base,%eax
|
||||
end ['EAX'];
|
||||
{$ASMMODE att}
|
||||
|
||||
{$i heap.inc}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user