Subject: string copy
To: Dave Rand <dlr@above.net>
From: Ian Dall <Ian.Dall@dsto.defence.gov.au>
List: port-pc532
Date: 06/06/1999 23:47:41
While on this can anyone see why the following:
5: movd 0x01010101,r3 /* Magic number to use */
movd 0x80808080,r4 /* Another magic number. */
movd 0(r1),r5 /* Get 1st double word. */
movd r5,r0 /* Save for storage later. */
subd r3,r0 /* Gets borrow if byte = 0. */
bicd r5,r0 /* Clear original bits. */
andd r4,r0 /* See if borrow occurred. */
cmpqd 0,r0
bne 1f /* See if this DWORD contained a 0. */
.align 2,0xa2
0: movd 4(r1),r0 /* Get next 4 bytes to process */
movd r5,0(r2) /* Save away prev four bytes. */
addd 4,r1 /* addd is faster then addqd here */
addd 4,r2
movd r0,r5 /* Save for storage if no zeros. */
subd r3,r0
bicd r5,r0
andd r4,r0
cmpqd 0,r0
beq 0b
can not be re-written as:
5: movd 0x01010101,r3 /* Magic number to use */
movd 0x80808080,r4 /* Another magic number. */
0: movd 0(r1),r5 /* Get 1st double word. */
movd r5,r0 /* Save for storage later. */
subd r3,r0 /* Gets borrow if byte = 0. */
bicd r5,r0 /* Clear original bits. */
andd r4,r0 /* See if borrow occurred. */
cmpqd 0,r0
bne 1f /* See if this DWORD contained a 0. */
movd r5,0(r2) /* Save away prev four bytes. */
addd 4,r1 /* addd is faster then addqd here */
addd 4,r2
beq 0b
Ian