作者zxvc (zxvc)
看板ASM
标题请问MMX与GCC C & ASM的问题
时间Tue Apr 24 17:12:03 2007
最近作专题要编译一个程式:
http://iie.fing.edu.uy/investigacion/grupos/gmm/proyectos/tararira/ingles.php3
不过这程式是用C语言与x86指令写的,
这程式的原作者似乎是用gcc 3编译的。
可是我手边的机器多是用gcc 4,
结果编译的时候出现一堆问题,我试着看看自己有没有能力修正。
之前也没有用过MMX与GCC C & ASM,只在MASM上写过一点x86。
我现在遇到一个问题,
就是以下我自己写的一个小程式为什麽无法用gcc编译成功呢?
我的编译器是gcc 4.0.3,编译的时候出现这个错误:
gcc test.c -mmmx
test.c: In function 'main':
test.c:9: error: impossible register constraint in 'asm'
test.c:15: confused by earlier errors, bailing out
~~~~~~~~~~~~~~~~~~~ test.c ~~~~~~~~~~~~~~~~~~~~
#include <stdlib.h>
#include <stdio.h>
int main ()
{
double a, b;
a = 5.0;
b = 0.0;
asm (
"movq %1, %0 \n\t"
: "=y" (b)
: "m" (a));
printf ("Hello world.: %6.2f\n", b);
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
『: "=y" (b)』那一行我是参考这篇文章设定的:
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Machine-Constraints.html#Machine-Constraints
或者缩减网址:
http://0rz.tw/ce2AA
希望有高手能帮我解答,谢谢。
--
Albert Einstein :
If there is any religion that could cope with modern scientific needs it
would be Buddhism.
《金刚经》一切有为法 如梦幻泡影 如露亦如电 应作如是观
http://web.cc.ncu.edu.tw/~93501025/jg.doc
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.130.69
※ 编辑: zxvc 来自: 140.115.130.69 (04/24 17:14)
※ 编辑: zxvc 来自: 140.115.130.69 (04/24 17:15)
1F:→ zxvc:找到原因了,因为MMX暂存器是整数暂存器... 04/24 18:34
2F:推 wowtiger:我看不懂at&t 不过MMX玩之後要emms 不然printf会读不到 04/24 19:37
3F:推 wowtiger:另外 movq要先load到mm0 之後store到mem (或许at&t不一样 04/24 19:41