首页 > 试题广场 >

你正在编写一个新的3D游戏,希望能名利双收。现在正在写一个函

[问答题]
你正在编写一个新的3D游戏,希望能名利双收。现在正在写一个函数,使得在画下一帧之前先清空屏幕缓冲区。工作的屏幕是640X480像素数组。工作的机器有一个64KB直接映射高速缓存,每行4个字节。使用下面的C语言数据结构:  
struct pixel{
  char r;
  char g;
  char b;
  char a;
};
struct pixel buffer[480][640];
int i,j;
char *cptr;
char *iptr;
有如下假设:
  • sizeof(char)==1和sizeof(int)==4
  • buffer起始于内存地址0
  • 高速缓存初始为空。
  • 唯一的内存访问是对于buffer数组中元素的访问。变量i,j,cptr和iptr存放在寄存器中。
下面代码中百分之多少的写会在高速缓存中补命中?
for(j=0;j<640;j++){
  for(i=0;i<480;i++){
    buffer[i][j].r=0;
    buffer[i][j].g=0;
    buffer[i][j].b=0;
    buffer[i][j].a=0;
   }
}

这道题你会答吗?花几分钟告诉大家答案吧!