簡體   English   中英

采用英特爾風格的內聯匯編

[英]Intel-style inline assembly in gcc

我正在嘗試使用gcc編譯器在Code :: Blocks中編譯一個舊的C ++軟件項目,在解決了一些其他問題之后,我遇到了問題:該項目有一個英特爾式內聯ASM文件寫成

_asm {
  code here
}

並且編譯器拒絕使用“error:'_asm'在此范圍中聲明”來編譯它。

我花了一段時間谷歌搜索解決方案,但我唯一能找到的是將-masm=intel添加到構建選項(我已經嘗試過但無法工作),或轉換代碼asm ("code here"); (由於ASM的數量龐大,這是不可行的)。 有誰知道如何讓gcc按原樣編譯這段代碼,還是應該放棄並使用不同的編譯器?

GCC對內聯匯編程序使用了非常不同的語法 ,因此您將無法通過簡單的更改來處理它。 我看到以下選項:

  1. 用GCC語法或C代碼重寫所有內容
  2. 制作一些腳本轉換為GCC語法(非平凡的任務)
  3. 使用為其編寫的任何編譯器編譯代碼(MSVC?)

你根本無法讓gcc按原樣編譯代碼。 如果你需要使用gcc編譯這個東西,你必須用C ++或gcc兼容的asm重寫代碼。 如果真的有很多匯編代碼 - 比方說200條指令或更多 - 那么學習gcc匯編語法可能是值得的; 如果沒有,用C ++編寫代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM