最近遇到一个问题,一个类原本在Qt5.7下编译成功,但是把这个类移植到Qt5.14却报错了,查找原因,这个类嵌入汇编语句,上网查了不少才了解原因并改正编译通过。
原因:
-
这个类使用的汇编语法是AT &T;
-
Qt5.7下使用的是mingw(gcc)编译器,它适用AT &T的汇编语法;
-
Qt5.14使用的是msvc32位编译器,它适用Intel汇编语法法;
-
另:Qt5.14msvc64位不支持汇编语言。
方法:
- 将AT &T的语法改成Intel语法即可。
举栗:
- AT &T语法这样写:asm( “movw %dx, %ax” );
- intel语法这样写: __asm{mov ax,dx};