This code performs a very simple block copy, 48 bytes at a time, and approaches the maximum throughput for a particular machine: ; Simple block copy function ; R12 points to the start of the source block ; R13 points to the start of the destination block ; R14 points to the end of the source block loop LDMIA R12!, (R0-R11} ; load 48 bytes STMIA R13!, {R0-R11} ; store 48 bytes CMP R12, R14 ; reached the end yet? BLO loop ; branch to the top of the loop The source and destination must be word-aligned, and if the object to be copied is not a multiple of 48 bytes long, extra bytes are copied to bring the total to the next multiple of 48 bytes. A more sophisticated routine is needed if this extra copying is to be avoided.