顺便问问楼主,你做什么产品的啊,都需要研究MIPS指令集? 原帖由 Garyyin 于 2007-6-20 13:39 发表于 10楼
路过,学习一下,
顺便问问楼主,你做什么产品的啊,都需要研究MIPS指令集?
具體說應該是mipsel
wireless router 上的
gcc 內嵌彙編不知道怎麼不耗用
如果我加__volatile__就說不兼容錯誤.
我想知道為甚麼.
我的glibc是2.2的難道不支持碼?
另, 我東西已經做完了現在初在測試階段.不過有幾個像這樣的問題還沒有清楚, 所以想問問
我剛接觸這行, 懂的不是很多, 所以說話沒有邊界, 請見諒 原帖由 Arthur_ 于 2007-6-20 14:08 发表于 11楼
具體說應該是mipsel
wireless router 上的
gcc 內嵌彙編不知道怎麼不耗用
如果我加__volatile__就說不兼容錯誤.
我想知道為甚麼.
我的glibc是2.2的難道不支持碼?
另, 我東西已經做完了 ...
把加上__volatile__时报的错误帖上来,还有就是,如果想解决问题,仔细的看别人的回复。
你如果不care别人的回复,还是不要寄希望于bbs了。 原帖由 bluster 于 2007-6-20 17:10 发表于 12楼
把加上__volatile__时报的错误帖上来,还有就是,如果想解决问题,仔细的看别人的回复。
你如果不care别人的回复,还是不要寄希望于bbs了。
說在前面的話,
個位大俠的每個留言我都去研究了, 有些去做了驗證.ok!
程序結構大概這樣:
在inline函數中定義上面的代碼(加上__volatile__),但是沒有在主程序中調用它, 然後編譯沒有錯誤.
問題是下面:
當我在主程序任何一個地方調用它後出現如下錯誤:
inconsistent operand constraints in an 'asm'
後來我不得不把__volatile__去掉然後編譯通過, 但是程序執行結果不正確 如果可以幫我的話, 需要甚麼測試條件隨便說
我這裡設備全的很. objdump後看不到, 看來真是有問題
下面是mipsel裡面的一段彙編, 跟我的格式不一樣,正在研究中.
static __inline__ char *strcpy(char *__dest, __const__ char *__src)
025 {
026 char *__xdest = __dest;
027
028 __asm__ __volatile__(
029 ".set\tnoreorder\n\t"
030 ".set\tnoat\n"
031 "1:\tlbu\t$1,(%1)\n\t"
032 "addiu\t%1,1\n\t"
033 "sb\t$1,(%0)\n\t"
034 "bnez\t$1,1b\n\t"
035 "addiu\t%0,1\n\t"
036 ".set\tat\n\t"
037 ".set\treorder"
038 : "=r" (__dest), "=r" (__src)
039 : "0" (__dest), "1" (__src)
040 : "memory");
041
042 return __xdest;
043 } 終於找到了
http://logos.cs.uic.edu/366/notes/MIPS%20Quick%20Tutorial.htm
页:
1
[2]