インラインアセンブラ
iPhoneでのインラインアセンブラの使い方を簡単に説明してきましたが最後となる第6回では実用的なサンプルとして「画像のグレースケール化」の解説をします。サンプルのインラインアセンブラの部分はこの様になります。 static __inline__ void asmGrayscal…
自分もかなり理解に手間取った(※)制約修飾子 & の解説をします。 ※分かりづらかったため実際に比較サンプルなども作成してみてやっと理解できました。今まで解説したデータの特性を表す "+r" や "=r" の + や = は制約修飾子と呼ばれ、これら以外にも & が存…
第4回はメモリのロード/ストア(読み込み/書き込み)処理についてです。サンプルは以下の様になります。 int list[] = { 1, 2, 3, 4 }; int *pList = list; NSLog(@"%d %d %d %d", list[0], list[1], list[2], list[3]); __asm__ volatile ( // data[0]に対す…
3回目では条件分岐処理の解説をします。 解説の前に 解説の前にちょっと別のお話。昨日ふと、そういえば「アセンブラ」と「アセンブリ」をちゃんと分けて書いていたかな?と思い、「うん、自信を持って全部『アセンブラ』って書いたと言えるな」という状況で…
2回目のプログラム編です。今回は四則演算を中心に解説します。 加算 まずは加算、足し算の処理です。プログラムはこの様になります。 前回の解説を参考に applicationDidFinishLaunching: などに記述して下さい。 int val1 = 5; NSLog(@"%d", val1); __asm_…
iPhoneでインラインアセンブラを使う「プログラム編」を始めます。先に記載した「資料編」で紹介した資料の入門部分をざっと読んでおいたり、一緒に見ながら進めると理解が進みやすいと思います。 準備 まず、プログラムに取りかかる前にいくつか気をつける…
iPhoneでインラインアセンブラ(C言語の途中にアセンブラの記述を埋め込んだもの)について調べて最近になってやっと画像のグレースケール化のプログラムの作成に成功しました。当初はマニアックすぎて需要が無いだろうと思ってエントリーを書く予定は無かった…