mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-15 15:59:26 +02:00
70 lines
1.1 KiB
ObjectPascal
70 lines
1.1 KiB
ObjectPascal
procedure error(const s: string);
|
|
begin
|
|
writeln('error: ',s);
|
|
halt(1);
|
|
end;
|
|
|
|
procedure testlohiword;
|
|
var
|
|
w: word;
|
|
i: smallint;
|
|
begin
|
|
w := $1234;
|
|
i := $1234;
|
|
if lo(w) <> (w and 255) then
|
|
error('lo word');
|
|
if lo(i) <> (i and 255) then
|
|
error('lo integer');
|
|
|
|
if hi(w) <> (w shr 8) then
|
|
error('hi word');
|
|
if hi(i) <> (i shr 8) then
|
|
error('hi integer');
|
|
end;
|
|
|
|
|
|
procedure testlohilong;
|
|
var
|
|
w: cardinal;
|
|
i: longint;
|
|
begin
|
|
w := $12345678;
|
|
i := $12345678;
|
|
if lo(w) <> (w and $ffff) then
|
|
error('lo cardinal');
|
|
if lo(i) <> (i and $ffff) then
|
|
error('lo longint');
|
|
|
|
if hi(w) <> (w shr 16) then
|
|
error('hi cardinal');
|
|
if hi(i) <> (i shr 16) then
|
|
error('hi longint');
|
|
end;
|
|
|
|
|
|
procedure testlohiqword;
|
|
var
|
|
w: qword;
|
|
i: int64;
|
|
begin
|
|
w := $12345678;
|
|
w := w shl 32;
|
|
w := w or $98765432;
|
|
i := int64(w);
|
|
if lo(w) <> (cardinal(w)) then
|
|
error('lo qword');
|
|
if longint(lo(i)) <> (longint(w)) then
|
|
error('lo int64');
|
|
|
|
if hi(w) <> (w shr 32) then
|
|
error('hi qword');
|
|
if hi(i) <> (i shr 32) then
|
|
error('hi int64');
|
|
end;
|
|
|
|
begin
|
|
testlohiword;
|
|
testlohilong;
|
|
testlohiqword;
|
|
end.
|