ffmpeg AT&T汇编转intel汇编 之(emms_c)

本文介绍如何在使用ffmpeg时,将libavutilx86internal.h中emms_c函数从AT&T汇编转换为Intel汇编,以确保在VC环境中正确运行,解决汇编指令不兼容的问题。

相信大家在移植ffmpeg代码到vc中都会遇到很多汇编指令,是VC不支持的。那是因为AT&T汇编和intel汇编格式不兼容引起的。
 
今天给大家介绍一下libavutil\x86\internal.h 中emms_c函数的移植吧。
 
函数原型:
01.static av_always_inline void emms_c(void) 
02.{ 
03.    if(av_get_cpu_flags() & AV_CPU_FLAG_MMX) 
04.        __asm__ volatile ("emms" ::: "memory"); 
05. 
06.} 

因为VC asm提供了emms,直接调用就可以了。因此修改为:

01.static av_always_inline void emms_c(void) 
02.{ 
03.    if(av_get_cpu_flags() & AV_CPU_FLAG_MMX) 
04.        __asm emms; 
05.} 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值