| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4324 人关注过本帖
标题:C语言用汇编优化问题
只看楼主 加入收藏
状态二
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2014-8-31
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:3 
C语言用汇编优化问题
我对汇编不熟悉,希望有大神能帮助将下面这段程序用汇编优化,万分感谢


#include<stdio.h>
#include<stdlib.h>

#define BLOCK_SIZE             4

int a[16][16] ;

void forward4x4(int (*block)[16], int (*tblock)[16], int pos_y, int pos_x)
{
  int i, ii;  
  int tmp[16];
  int *pTmp = tmp, *pblock;
  int p0,p1,p2,p3;
  int t0,t1,t2,t3;

  // Horizontal
  for (i=pos_y; i < pos_y + BLOCK_SIZE; i++)
  {
    pblock = &block[i][pos_x];
    p0 = *(pblock++);
    p1 = *(pblock++);
    p2 = *(pblock++);
    p3 = *(pblock  );

    t0 = p0 + p3;
    t1 = p1 + p2;
    t2 = p1 - p2;
    t3 = p0 - p3;

    *(pTmp++) =  t0 + t1;
    *(pTmp++) = (t3 << 1) + t2;
    *(pTmp++) =  t0 - t1;   
    *(pTmp++) =  t3 - (t2 << 1);
  }
   
  // Vertical
   for (i=0; i < BLOCK_SIZE; i++)
  {
    pTmp = tmp + i;
    p0 = *pTmp;
    p1 = *(pTmp += BLOCK_SIZE);
    p2 = *(pTmp += BLOCK_SIZE);
    p3 = *(pTmp += BLOCK_SIZE);

    t0 = p0 + p3;
    t1 = p1 + p2;
    t2 = p1 - p2;
    t3 = p0 - p3;

    ii = pos_x + i;
    tblock[pos_y    ][ii] = t0 +  t1;
    tblock[pos_y + 1][ii] = t2 + (t3 << 1);
    tblock[pos_y + 2][ii] = t0 -  t1;
    tblock[pos_y + 3][ii] = t3 - (t2 << 1);
  }
}

int main(){
   
    int (*b)[16] = a;
    int j,k;

    //input
    freopen("D:/BISHE/input.txt","r",stdin);
    for(j=0;j<16;j++){
        for(k=0;k<16;k++){
            scanf("%d ",&b[j][k]);   
        }
    }
    freopen("CON","r",stdin);
   
     for (j = 0; j < 16; j+=4)
    {
        for (k = 0;k < 16; k+=4)
        {
            forward4x4( b,  b, j, k);
        }
    }
   
    //output
    freopen("D:/BISHE/output1.txt","w",stdout);
    for (j = 0; j < 16; j++)
    {
        for (k = 0;k < 16; k++)
        {
            printf("%d ",a[j][k]);
        }
        printf("\n");
    }
    freopen("CON","w",stdout);
   
    system("pause");
    return 0;   
}
搜索更多相关主题的帖子: C语言 include 
2015-02-01 15:59
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
问题一、你的代码的实现目标是???
问题二、你的代码能否正确运行并得到预期的结果
问题三、为什么要用汇编优化???  汇编就一定优化吗

DO IT YOURSELF !
2015-02-02 14:24
状态二
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2014-8-31
收藏
得分:0 
回复 2楼 wp231957
那个函数是实现离散余弦变换的,就是输入一个16x16的数组,经过运算改变其中的值输出。代码可以正确运行。我的任务是想办法让它的运行时间变短,所以想问问看能否用汇编优化。
2015-02-02 18:12
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:10 
从理论上说汇编语言要比其他语言的执行效率要高些,但关键要看你的程序结构和算法是否合理。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-02-02 20:07
快速回复:C语言用汇编优化问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016601 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved