mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-12 13:49:39 +02:00
* fix set_set_range
This commit is contained in:
parent
d11cecb354
commit
bcdf065947
@ -157,6 +157,7 @@ function fpc_set_set_range(const orgset: fpc_normal_set; l,h : byte): fpc_normal
|
|||||||
adds the range [l..h] to the set pointed to by p
|
adds the range [l..h] to the set pointed to by p
|
||||||
}
|
}
|
||||||
var
|
var
|
||||||
|
saveh : byte;
|
||||||
saveesi,saveedi,saveebx : longint;
|
saveesi,saveedi,saveebx : longint;
|
||||||
asm
|
asm
|
||||||
movl %edi,saveedi
|
movl %edi,saveedi
|
||||||
@ -166,6 +167,7 @@ asm
|
|||||||
movl orgset, %esi // source set address in esi
|
movl orgset, %esi // source set address in esi
|
||||||
movzbl l,%eax // lowest bit to be set in eax
|
movzbl l,%eax // lowest bit to be set in eax
|
||||||
movzbl h,%ebx // highest in ebx
|
movzbl h,%ebx // highest in ebx
|
||||||
|
movb %bl,saveh
|
||||||
movl $8,%ecx // we have to copy 32 bytes
|
movl $8,%ecx // we have to copy 32 bytes
|
||||||
cmpl %eax,%ebx // high < low?
|
cmpl %eax,%ebx // high < low?
|
||||||
rep // copy source to dest (it's possible to do the range
|
rep // copy source to dest (it's possible to do the range
|
||||||
@ -195,7 +197,7 @@ asm
|
|||||||
subl $4,%ebx
|
subl $4,%ebx
|
||||||
jnz .Lset_range_loop
|
jnz .Lset_range_loop
|
||||||
.Lset_range_hi:
|
.Lset_range_hi:
|
||||||
movb h,%cl // this is ok, h is on the stack
|
movb saveh,%cl // this is ok, h is on the stack
|
||||||
movl %edx,%ebx // save current bitmask
|
movl %edx,%ebx // save current bitmask
|
||||||
andb $31,%cl
|
andb $31,%cl
|
||||||
subb $31,%cl // cl := (31 - (hi and 31)) = shift count to
|
subb $31,%cl // cl := (31 - (hi and 31)) = shift count to
|
||||||
@ -684,7 +686,10 @@ end;
|
|||||||
|
|
||||||
{
|
{
|
||||||
$Log$
|
$Log$
|
||||||
Revision 1.16 2003-12-04 21:42:07 peter
|
Revision 1.17 2003-12-24 22:38:24 peter
|
||||||
|
* fix set_set_range
|
||||||
|
|
||||||
|
Revision 1.16 2003/12/04 21:42:07 peter
|
||||||
* register calling updates
|
* register calling updates
|
||||||
|
|
||||||
Revision 1.15 2003/12/03 23:06:35 peter
|
Revision 1.15 2003/12/03 23:06:35 peter
|
||||||
|
Loading…
Reference in New Issue
Block a user