2009-08-18 52 views

回答

9

正確,它仍然不支持在VS 2010 Beta 1。我的猜測是,內聯彙編太難以實現了:Microsoft實現它的方式,它與周圍的C代碼集成,以便數據可以流入和流出C代碼,並自動注入適當的粘合代碼。爲此,C編譯器實際上需要了解彙編代碼;他們只是沒有實現AMD64和Itanium。

+1

C編譯器生成ASM作爲中間件,沒有什麼讓它在AMD64上允許內聯ASM「困難」。平臺規格是爲什麼內聯ASM不支持x86中的x86_64目標的幾個編譯器中的原因。 – 2013-12-15 16:26:41

+0

@MarkKCowan:你見過* MSVC的內聯ASM嗎?它涉及到很多我做的事 - 我的意思是;您可以自由地將C/C++變量與彙編代碼文本混合,因此編譯器必須解析並(在某個級別上)分析所有代碼,而不像GCC那樣,彙編代碼本身是以一種讓人想起printf的樣式指定的方式格式化字符串以及對輸入,輸出和破壞寄存器的顯式描述,避免了編譯器試圖分析程序集的任何需求。說實話,我更喜歡海灣合作委員會的做法,因爲它不涉及對編譯器的第二次猜測。 – SamB 2016-02-13 18:02:39

+1

@SamB yep,與Delphi中的內聯程序集相同。我只希望GCC沒有使用AT&T的語法:( – 2016-02-13 18:09:43

3

這似乎是一個相當大的功能,以剛落...

這是很容易調用使用匯編編寫的函數,只要你遵循Ç約定。 This tutorial解釋如何。

+0

同意,唯一的真正的限制是你不能在同一個例程中混合使用C語言和ASM,從科學代碼中常見的內聯ASM混合的Pascal背景來看,我完全同意將語言分離爲不同功能的決定。 – 2013-08-04 20:22:32