2009-04-21 83 views

回答

1

接受內聯彙編的大多數C編譯器。當然,組件優化的部分並不是跨架構的,但我無法真正想象一個跨架構的彙編語言,無論如何它都是非常有效的。我會研究油氈,但是通過優化編譯器和完全不同的平臺,以及從4個到數百個寄存器的任何地方,我真的看不到這個工作得很好。

另一種選擇是C#/ Java和他們的字節碼。但我仍然質疑手動優化的有用性。

+0

我認爲一個良好的內聯彙編可以比純彙編得到更好的效果,因爲編譯器會做一些優化。 – 2009-04-21 23:25:45

+0

通常優化撐出內聯彙編段的假設,如果你去努力把它寫,你真的是認真的。在嵌入式系統固件中,這可能很重要,您可能希望使用特定指令來獲得效果,或故意浪費流水線延遲時隙來正確計時循環。你的里程會有所不同,檢查你的手冊,當然這是一個實施定義的功能,不是很便攜。 – RBerteig 2009-04-21 23:54:07

+0

C#字節碼是MSIL,如果我沒有弄錯,CLR的語言。你可以對它做一些調整,但我認爲C#解釋器已經做得相當不錯了。 利諾以一種實驗性的方式很有趣。如果沒有其他的東西,它的創造者會得到一些實際的使用。一件好事就是它在理論上可以移植到任何系統。 – CodexArcanum 2009-04-22 00:45:28

2

你可以直接嘗試使用LLVM的本事。

由於是創建/改變它,你站在了能夠使一些useul與它一個很好的機會(儘管沒有IDE支持)已經提供了許多工具。

如果你在C++中只寫了你想要的東西,那麼就用Clang編譯它,保持中間格式。

對於是否你可能會喜歡它試圖快速指示他們online compiler

+0

+1對於在線玩具 – SingleNegationElimination 2009-04-21 23:54:23

9

C--是設計用來由編譯器主要產生的中間語言,是C和彙編之間的某處

+0

有人可能會說C本身是相當低的水平,但不是那麼低的水平。 – pilsetnieks 2013-05-06 00:07:54

0

的System z上有HLASM,我們使用了不少的發展。它增加了各種更高級的語言結構。除了HLASM將裝配帶向高級語言,我相信IBM有一個基於PL/I的內部產品,這會使C向組裝方向發展:-)

0

我曾經使用過PL/M對我來說只是大會的一個級別。它更像是一個宏語言,但有一些更高層次的結構像循環等。這是一個有趣的經歷。

4

FORTH - 不是很好的彙編,但它被大量使用,並且水平很低。

0

LLVM是一個很好的答案。

一些其他有趣的語言是JVM字節碼和MSIL(.Net平臺字節碼)。兩者都提供了基於堆棧的系統,這與x86程序集有很大的不同。

-1

C本身幾乎是組裝,只需100倍更具可讀性,它可以幫助你來的時候你有很多活躍的變量。儘管它接近彙編語言。 C中沒有任何操作幾乎不直接對應彙編語言(甚至直接對應)。

ASM:「做正是我說什麼,正是我怎麼說」

C:「做我的意思是,你可以做一些有限的重新排序,如果它是速度更快,不會破壞的結果」

ç是肯定要走的不是直接以某種方式的CPU或硬件是從C(例如特殊說明)困難的處理非常小的存根以外的任何方式。即便如此,好的C編譯器通過內在函數爲您提供了這些特殊指令。

現代的CPU是如此複雜,很難爲人類預測的指令序列會產生什麼樣的影響。編譯器實際上可以微管理所有的延遲和吞吐量,並且一致地使用(接近)最佳指令序列。今天的C編譯器幾乎肯定會在典型的代碼上勝出人類彙編程序員。爲緊密的循環,人類優化組件可以跑贏C,但通常不是很大。