將66庫中程式移植到64x 中的問題

2021-10-12 03:04:25 字數 1133 閱讀 8136

將使用66核的程式移植到64x+時,執行時顯示如下:

[e0800]

instruction invalid for c6400+

mfence 

1 assembly error, no assembly warnings

errors in source - assembler aborted

原來在程式中有這樣一條語句

asm(" mfence ");

查詢64x+是否有此彙編指令:在ccs介面,help->help contents,然後去在search框搜尋mfence,顯示如下:

intrinsic

c6200

c6400

c6400+

c6700

c6700/c6700+

c6740

_abs

yesyes

yesyes

yesyes

_mfence

yes

得知mfence只有在c6600中才有,c6400+無此指令。

最後將此指令注釋替換掉,即可編譯通過。

解決思路記錄:當時是結合靜態庫編譯程式,在包含asm(" mfence ")的函式一直報錯誤,說此函式未定義。當時確認了半天,函式明明已定義了,想不明白為什麼出錯。後來去看靜態庫時,才發現,在編譯靜態庫時,雖然在problem視窗下沒什麼errors、warning。當時就沒細看console視窗,但控制台console視窗顯示

compilation failure

gmake: *** [test.obj] error 1

gmake: target `all' not remade because of errors.

[e0800]

instruction invalid for c6400+

mfence 

1 assembly error, no assembly warnings

errors in source - assembler aborted

然後順藤摸瓜,解決問題。

將 Linux 應用程式移植到 64 位系統上 2

從 32 位系統移植到 64 位系統 本節介紹如何解決一些常見的問題 宣告要想讓您的 在 32 位和 64 位系統上都可以工作,請注意以下有關宣告的用法 表示式在 c c 中,表示式是基於結合律 操作符的優先順序和一組數學計算規則的。要想讓表示式在 32 位和 64 位系統上都可以正確工作,請注意以...

將FrameBuffer測試程式移植到板子上

目標板用的ti 的omap138,將之前交叉編譯好的directfb和freetype庫壓縮後,用u盤拷到目標板系統的目錄下 opt directfb opt freetype解壓。由於windows不支援符號鏈結,直接複製包會出些錯誤,只好先壓縮了再解壓,幸好板子上的核心上有解壓程式。再把字型檔案...

將 MFC 應用程式移植到 Linux

第一種方法 找乙個類似mfc框架的程式庫。您可能仍然在維護用微軟基礎類庫 microsoft foundation classes mfc 構建的舊的 windows 應用程式,而現在卻有客戶要求 linux 版本,該怎麼辦呢?在您的團隊中可能有技術熟練的 mfc 開發人員,但如何達到加速 linu...