汇编MMX实现图片淡入淡出核心代码

计算机组成课程个人作业

参考:

https://blog.csdn.net/yangjianqiao0/article/details/69388595

https://blog.csdn.net/dahan_wangtao/article/details/1944153

核心代码

复制代码
#include<iostream>
using namespace std;
__int64 i64_a[2],*p64=i64_a,test=1;
unsigned char a[4]={2,2,2,2},b[4]={128,128,128,128},*pa=a,*pb=b;
unsigned short step_now=15,step_all=32,stepMMXn[4],stepMMXl[4];
int main(){
//    i64_a[0]=0;
//    i64_a[1]=1;
//    __asm("\
//        mov p64,%eax\n\
//        movq (%eax),%mm0\n\
//        movq %mm0,8(%eax)\n\
//    ");
    for(int i=0;i<4;i++){
        stepMMXn[i]=step_now;
        stepMMXl[i]=32-step_now;
    }
    __asm("\
        pxor %mm7,%mm7\n\
        movd a,%mm0\n\
        movd b,%mm1\n\
        punpcklbw %mm7,%mm0\n\
        punpcklbw %mm7,%mm1\n\
        movq stepMMXl,%mm2\n\
        movq stepMMXn,%mm3\n\
        pmullw %mm2,%mm0\n\
        pmullw %mm3,%mm1\n\
        paddw %mm1,%mm0\n\
        psrlw $5,%mm0\n\
        packuswb %mm7,%mm0\n\
        movd %mm0,a\n\
    ");
    printf("%llx\n",test);
    printf("%d %d\n",sizeof(a),sizeof(test));
    for(int i=0;i<4;i++)
        printf("a=%d,b=%d\n",a[i],b[i]);
    return 0;
}
复制代码

完整代码还在写

posted @   海底淤泥  阅读(152)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示