[OpenBIOS] [PATCH 10/10] Adding filll Forth primitive
Segher Boessenkool
segher at kernel.crashing.org
Wed Aug 17 10:03:15 CEST 2011
> Apple's code does:
>
> int *dest ... ;
> for (i = count; i > 0; i -= 4)
> *dest++ = value;
Oh, and it does an unsigned 32-bit read for the (signed) count;
this means that on 64-bit systems it does not work for negative
count values. Not that it is ever called like that, heh.
Here's the code if you care (from 5.2.4f1, i.e. for G5 machines):
58c0: 7e 84 a3 78 mr r4,r20
58c4: 80 7f 00 00 lwz r3,0(r31)
58c8: 80 bf 00 04 lwz r5,4(r31)
58cc: 7c 63 1b 79 mr. r3,r3
58d0: 86 9f 00 08 lwzu r20,8(r31)
58d4: 3b ff 00 04 addi r31,r31,4
58d8: 40 81 00 14 ble 0x58ec
58dc: 34 63 ff fc addic. r3,r3,-4
58e0: 90 85 00 00 stw r4,0(r5)
58e4: 38 a5 00 04 addi r5,r5,4
58e8: 42 80 ff f0 bc 20,lt,0x58d8
58ec: 4e 80 00 20 blr
Segher
More information about the OpenBIOS
mailing list