# MI_CpuRecv*

## 構文

  `#include <nitro/mi.h>`
  `void MI_CpuRecv32( volatile const void* src, void* dest, u32 size );`
  `void MI_CpuRecv16( volatile const void* src, void* dest, u32 size );`
  `void MI_CpuRecvFast( volatile const void* src, void* dest, u32 size );`

## 引数

src | 転送元アドレス
dest | 転送先アドレス
size | 転送サイズ

## 返り値

なし。

## 説明

CPUで同じアドレスからデータを読み込みます。
転送元アドレスを変えず、転送先アドレスだけをインクリメントし、連続領域にデータを次々と読み込みます。

`MI_CpuRecv16()` は 16ビット単位で転送します。転送元アドレス、転送先アドレスは2バイトアラインメントする必要があります。

`MI_CpuRecv32()` は 32ビット単位で転送します。転送元アドレス、転送先アドレスは4バイトアラインメントする必要があります。

`MI_CpuRecvFast()` は 32バイト単位で高速にコピーを行います。転送元アドレス、転送先アドレスは4バイトアラインメントする必要があります。転送サイズは4の整数倍バイトである必要があります。32の整数倍バイトである必要はありません。32バイト単位で転送した後の端数分は`MI_CpuRecv32()` と同じ処理を行ないます。

## 内部動作

DMAコントローラは使用せず、CPUだけで処理します。システムコールは使用しません。

## 参照

`MI_CpuCopy*, MI_CPUFill*, MI_CpuClear*, MI_CpuSend*, MI_DmaRecv*
`

## 履歴

2007/12/26 `MI_CpuRecvFast()` 追加
2007/10/23 初版