請問MMX與GCC C & ASM的問題

看板ASM (組合語言)作者 (zxvc)時間17年前 (2007/04/24 17:12), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/4 (看更多)
最近作專題要編譯一個程式: 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)

04/24 18:34, , 1F
找到原因了,因為MMX暫存器是整數暫存器...
04/24 18:34, 1F

04/24 19:37, , 2F
我看不懂at&t 不過MMX玩之後要emms 不然printf會讀不到
04/24 19:37, 2F

04/24 19:41, , 3F
另外 movq要先load到mm0 之後store到mem (或許at&t不一樣
04/24 19:41, 3F
文章代碼(AID): #16BSdbPp (ASM)
文章代碼(AID): #16BSdbPp (ASM)