Repository URL to install this package:
|
Version:
3.2.0 ▾
|
{ %CPU=i386 }
{$R-}
program test_register_pushing;
const
haserror : boolean = false;
procedure dotest;
var
wpush,lpush: longint;
begin
{$asmmode att}
asm
movl %esp,wpush
pushw %es
subl %esp,wpush
popw %es
end;
if wpush<>2 then
begin
Writeln('Compiler does not push "pushw %es" into 2 bytes');
haserror:=true;
end;
asm
movl %esp,lpush
pushl %es
subl %esp,lpush
popl %es
end;
if lpush<>4 then
begin
Writeln('Compiler does not push "pushl %es" into 4 bytes');
haserror:=true;
end;
asm
movl %esp,wpush
pushw %gs
subl %esp,wpush
popw %gs
end;
if wpush<>2 then
begin
Writeln('Compiler does not push "pushw %gs" into 2 bytes');
haserror:=true;
end;
asm
movl %esp,lpush
pushl %gs
subl %esp,lpush
popl %gs
end;
if lpush<>4 then
begin
Writeln('Compiler does not push "pushl %gs" into 4 bytes');
haserror:=true;
end;
{$asmmode intel}
asm
mov lpush,esp
push es
sub lpush,esp
pop es
end;
Writeln('Intel "push es" uses ',lpush,' bytes');
if haserror then
Halt(1);
end;
begin
dotest;
end.