# MI_CpuFind*

## 構文

  `#include <nitro/mi.h>`
  `void* MI_CpuFind8( const void* src, u8 data, u32 size );`
  `void* MI_CpuFind16( const void* src, u16 data, u32 size );`
  `void* MI_CpuFind32( const void* src, u32 data, u32 size );`

## 引数

src | 探索元アドレス
data | 探索対象のデータ
size | 探索サイズ

## 返り値

探索対象のデータが見つかった場合はその場所へのポインタを返します。 見つからなかった場合は NULL を返します。

## 説明

CPUでメモリから指定のデータを探します。

`MI_CpuFind8()` は探索元アドレスから判断してできるだけ効率的なメモリアクセスを選択し、適宜 16ビットおよび 32ビット単位でメモリから指定のデータを探索します。探索元アドレスのアラインメントを考慮する必要はありません。

`MI_CpuFind16()` は 16ビット単位でメモリから指定のデータを探索します。探索元アドレスは2バイトアラインメントする必要があります。

`MI_CpuFind32()` は 32ビット単位でメモリから指定のデータを探索します。探索元アドレスは4バイトアラインメントする必要があります。

## 内部動作

DMAコントローラは使用せず、CPUだけで処理します。システムコールは使用しません。
`MI_CpuFind8`に関しても16/32ビット単位で読み取りを行いますので、直接VRAMへアクセスする場合でも問題は発生しません。

## 参照

## 履歴

2007/12/10 初版