.file "duff-1.c" .text .align 2 .globl duffcpy .type duffcpy, @function duffcpy: link.w %a6,#0 move.l %d2,-(%sp) move.l 8(%a6),%a1 move.l 12(%a6),%a0 move.l 16(%a6),%d1 moveq.l #3,%d0 and.l %d1,%d0 moveq.l #1,%d2 cmp.l %d0,%d2 jbeq .L8 jbhi .L9 moveq.l #2,%d2 cmp.l %d0,%d2 jbeq .L7 moveq.l #3,%d2 cmp.l %d0,%d2 jbne .L1 .align 2 .L6: move.b (%a0)+,(%a1)+ .L7: move.b (%a0)+,(%a1)+ .L8: move.b (%a0)+,(%a1)+ .L9: moveq.l #3,%d0 cmp.l %d1,%d0 jbcc .L1 subq.l #4,%d1 move.b (%a0)+,(%a1)+ jbra .L6 .align 2 .L1: move.l (%sp)+,%d2 unlk %a6 rts .size duffcpy, .-duffcpy .globl testpat .section .rodata .type testpat, @object .size testpat, 46 testpat: .string "The quick brown fox jumped over the lazy dog." .text .align 2 .globl main .type main, @function main: link.w %a6,#-64 move.l %a2,-(%sp) pea 46.w pea testpat lea (-64,%a6),%a2 move.l %a2,-(%sp) jbsr duffcpy pea 46.w pea testpat move.l %a2,-(%sp) jbsr memcmp lea (24,%sp),%sp tst.l %d0 jbeq .L15 jbsr abort .align 2 .L15: clr.l -(%sp) jbsr exit nop .size main, .-main .ident "GCC: (GNU) 3.3.2"