c++ - 在 mathops.h 中的 VS2005 汇编代码中的 ffmpeg 编译不编译

标签 c++ assembly ffmpeg

我正在尝试在我的 vs2005 中编译 ffmpeg,但我对以下错误感到困惑:

libavcodec\x86/mathops.h(39):错误 C2143:语法错误:在“:”之前缺少“)”

它试图编译的代码是

  __asm__ (
    "imull %3               \n\t"
    "shrdl %4, %%edx, %%eax \n\t"
    :"=a"(rt), "=d"(dummy)
    :"a"(a), "rm"(b), "ci"((uint8_t)shift)
);

最佳答案

该代码绝对是 gcc 风格的内联汇编程序,而不是 Microsoft 风格。

我相信它可以被替换为:

 rt = ((int64_t)a * b) >> shift;

关于c++ - 在 mathops.h 中的 VS2005 汇编代码中的 ffmpeg 编译不编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17430005/

相关文章:

来自pngs的ffmpeg ... PNGS子集出错?

c++ - 如何创建模板 vector ?

c++ - 读取字符到数组

assembly - 数据危险的特定情况(当 R 类型指令出现在两个连续的 LW 之后时)

gcc - 关于序言/调用函数gcc intel x86的一些问题

x86-64 程序集的性能优化 - 对齐和分支预测

FFMPEG小波变换

c++ - 使用 C++11 Lambda 函数更改 vector(list, deque...) 中的所有元素

c++ - 模板别名-问题(C++之旅)

ffmpeg - 加速和 fps 更改后 WMP 中的伪影