AMD Typewriter x86 사용자 설명서

다운로드
페이지 256
Use Array Style Instead of Pointer Style Code
17
22007E/0—November 1999
AMD Athlon™ Processor x86 Code Optimization 
      *res++ = dp;  /* write transformed z */
      dp  = vv->x * *m++;
      dp += vv->y * *m++;
      dp += vv->z * *m++;
      dp += vv->w * *m++;
      *res++ = dp;  /* write transformed w */
      ++vv;     /* next input vertex */
      m -= 16;  /* reset to start of transform matrix */
   }
}
Example 2 (Preferred):  
typedef struct {
  float x,y,z,w;
} VERTEX;
typedef struct {
  float m[4][4];
} MATRIX;
void XForm (float *res, const float *v, const float *m, int 
numverts)
{  
   int i;
   const VERTEX* vv = (VERTEX *)v;
   const MATRIX* mm = (MATRIX *)m;
   VERTEX* rr = (VERTEX *)res;
   for (i = 0; i < numverts; i++) {
      rr->x = vv->x*mm->m[0][0] + vv->y*mm->m[0][1] + 
vv->z*mm->m[0][2] + vv->w*mm->m[0][3];
      rr->y = vv->x*mm->m[1][0] + vv->y*mm->m[1][1] + 
vv->z*mm->m[1][2] + vv->w*mm->m[1][3];
      rr->z = vv->x*mm->m[2][0] + vv->y*mm->m[2][1] + 
vv->z*mm->m[2][2] + vv->w*mm->m[2][3];
      rr->w = vv->x*mm->m[3][0] + vv->y*mm->m[3][1] + 
vv->z*mm->m[3][2] + vv->w*mm->m[3][3];
   }
}