* fix set_set_range

This commit is contained in:
peter 2003-12-24 22:38:24 +00:00
parent d11cecb354
commit bcdf065947

View File

@ -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