# MI_CpuCopy*

## C Specification

#include <nitro/mi.h>

    void MI_CpuCopy8( const void* src, void* dest, u32 size );
    void MI_CpuCopy16( const void* src, void* dest, u32 size );
    void MI_CpuCopy32( const void* src, void* dest, u32 size );
    void MI_CpuCopyFast( const void* src, void* dest, u32 size );

## Description

This function uses the CPU to copy memory.

`MI_CpuCopy8()` selects the most efficient copy method based on the transfer source address and transfer destination address, and appropriately carries out the copy in 16-bit and 32-bit units. The alignment of the transfer source address and transfer destination address do not need to be considered. `MI_CpuCopy16()` copies in 16-bit units. Both the transfer source address and the transfer destination address must be 2-byte aligned. `MI_CpuCopy32() copies in 32-bit units. Both the transfer source address and the transfer destination address must be 4-byte aligned. `MI_CpuCopyFast() copies at high speed in 32-bit units. Both the transfer source address and the transfer destination address must be 4-byte aligned.``

## Internal Operation

This processes only with the CPU and does not use the DMA controller. It does not use a system call.

## Arguments

`src` | The address of the transfer source
`dest` | The address of the transfer destination
`size` | The size that will be transferred

## Return Values

None

## See Also

`MI_CPUFill*, MI_CpuClear*, MI_CpuSend*, MI_DmaCopy*`

## Revision History

04/29/2004 Added description of `MI_CpuCopy8`
03/29/2004 Noted that a system call is not used
12/01/2003 Initial version