2018年12月23日
XML
カテゴリ: Linux
前回、比較的簡単にneon(ベクトル計算機能)が使えることがわかってから、
ずっと、コンパイラのプリプロセッサについて調べていました。
というのも、neonで順運動学の計算をおこなう方法として、
以前、SH4の行列計算機能を使うために考えた行列計算式がそのまま使えるんですね。

で、neonでは、右側のRとかpは、ベクトルとして扱うのですが(4列目がもったいないけど・・・)、
それに乗算する、c、e、bは、スカラとして一つ一つベクトルと掛け算します。
ロドリゲスの計算結果eは、ロボットの関節が直行座標軸を向いていると要素の内4つが
以前は、この辺りは、プログラム中で分岐させたり、
または、計算速度を優先して最初からベタに展開してたりしていたのですが、
そろそろ、もう少しスマートに、書きたいな~って。
つまり、プリプロセス段階で、ロボットの構造は決まっているのですから、
コンパイル時点では、構造に合わせた最適化がされつつ、ソースコードでは機体汎用性が高いと・・・。
ただ・・・、なかなかマクロ(プリプロセス)についての情報って探しづらい。
津田沼丸善でいろいろ本を探したのですが、どうも、こうピンポイントなものがなくて・・・。
なぜか、私がやりたいことって、マニアックでイレギュラーなことが多いみたい。(--;
そしたら、​ ここ ​に、超マニアック!!なマクロの使い方の解説があったので、頑張って読み解いて、
これを参考に書いてみたものを以下に示します。
#include <stdio.h>
#definePP_AX_0(i,j) \
 do { \
  printf("AX_0"); \
  printf(" %d",(i)); } \
 while (0);
#definePP_AX_1(i,j) \
 do { \
  printf("AX_1"); \
  printf(" %d",(j)); } \
 while (0);
#definePP_AX_2(i,j) \
 do { \
  printf("AX_2"); \
 while (0);
#definePP_AX_3(i,j) \
 do { \
  printf("AX_3"); \
  printf(" %d",(i)-(j)); } \
 while (0);
#define PP_AX(c,i,j) PP_AX_ ## c (i,j)
#define PP_FK(c,i,j) \
 do { \
  printf("FK_"); \
  PP_AX(c,i,j) \
  printf("\n"); } \
 while (0);
int main(int argc, char **argv)
{
PP_FK(0,3+1,2+1)
PP_FK(1,3+1,2+1)
PP_FK(2,3+1,2+1)
PP_FK(3,3+1,2+1)
return 0;
}
これを、make -Eオプションでプリプロセスで止めると、こんな感じ・・・。(^-^)v
int main(int argc, char **argv)
{
 do { printf("FK_"); do { printf("AX_0"); printf(" %d",(3+1)); } while (0); printf("\n"); } while (0);
 do { printf("FK_"); do { printf("AX_1"); printf(" %d",(2+1)); } while (0); printf("\n"); } while (0);
 do { printf("FK_"); do { printf("AX_2"); printf(" %d",(3+1)+(2+1)); } while (0); printf("\n"); } while (0);
 do { printf("FK_"); do { printf("AX_3"); printf(" %d",(3+1)-(2+1)); } while (0); printf("\n"); } while (0);
 return 0;
}





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2018年12月23日 20時32分44秒
[Linux] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

×

キーワードサーチ

▼キーワード検索

プロフィール

nisiken2002

nisiken2002

お気に入りブログ

まだ登録されていません

© Rakuten Group, Inc.
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: