2013-02-18 140 views
1

我有用C#編寫的這個非常複雜的算法,現在我需要的是在彙編程序中編寫相同的東西,我知道基礎知識,但是我真的很感謝有關應用程序結構以及如何處理的一些線索矩陣在asm中。 (這將是.DLL我假設)將C#代碼轉換爲程序集

這裏的算法: http://pastebin.com/iGKcK1rF

在此先感謝

+0

您粘貼的代碼是不是C – 2013-02-18 10:49:52

+1

已經重新標記爲C# – SynerCoder 2013-02-18 10:50:12

+0

我會重寫它的C,讓編譯器優化像瘋了似的(循環展開,等等),然後配置文件,並嘗試優化慢位ASM。 – leppie 2013-02-18 11:54:17

回答

1

的最快方法是使用你的C編譯器從C代碼生成彙編代碼。然後你可以研究這個生成的代碼並改進它。如果您使用的是gcc編譯器,則啓動時使用-S選項可生成彙編代碼。如果您使用的是名爲cl的MS Visual Studio編譯器,請將/Fa選項傳遞給它。

+0

問題是它不能被編譯,它只是一個類,依賴於另一個類 - 我需要的是用其他一些處理數據的機制來替換這個類Matrix。我需要它來做同樣的工作 – Ziker 2013-02-18 12:19:35

0

爲了增加米哈伊爾的回答以上:

  1. 簡介您優化之前!查找「gprof」。這裏有一個有用的鏈接: http://www.cs.utah.edu/dept/old/texinfo/as/gprof.html#SEC2

  2. 使用分析的結果,將您的代碼分區爲計算密集型內部循環和「外部代碼」。

  3. 將內部循環轉換爲asm(使用Mikhail的建議或其他方法),然後從您的程序中調用它們。

+0

我想嘗試使用內聯彙編器來編寫關鍵代碼 - 它比編寫單獨的ASM模塊要容易一些 – 2013-02-18 10:59:50

+0

和我的錯誤,它是C#代碼,但我想它應該沒有區別嗡嗡聲;> – Ziker 2013-02-18 11:07:55

+0

問題是它不能被編譯(它只是一個類,依賴於另一個類 - 我需要的是用其他一些處理數據的機制來替換這個類Matrix我不需要它將被嚴格轉換爲ASM,我需要它來完成同樣的工作。 – Ziker 2013-02-18 12:12:59