charとintではアラインメントが違う。更にintのエンディアンも言語では規定されていない。
ビッグエンディアンならデータ配置は0x55443322となり、リトルエンディアンなら0x44552233となるはずだが、
実際はa[2], a[3], a[4], a[1]の配置になっている。
これはそのDSの処理系とやらがビッグエンディアンでなおかつアラインメントが原因でエラーが発生しているのだろう。