作者yanming (雪地中的雁子)
看板ASM
标题Re: 请问MMX与GCC C & ASM的问题
时间Thu May 24 15:27:00 2007
※ 引述《zxvc (zxvc)》之铭言:
: 最近作专题要编译一个程式:
: 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
: 希望有高手能帮我解答,谢谢。
__asm{movq xmm0,temp_int}
请问当我在用 intel inline assembly 时,
编译到这一行时,
.net 会出现 "不合法的资料型态"的错误类别
改成 __asm{movq mm0,temp_int} 时就可以正确运作
这是由於 xmm0 是浮点数暂存器的关系吗?
如果是,那要怎麽使用 SSE 的指令呢?(xmm0 ~ xmm7 都不能用吗?)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.92.60.143
1F:推 wowtiger:movq不是SSE指令 是MMX和SSE2指令 05/25 02:19