線性彙編經驗總結

2021-04-19 00:30:29 字數 1789 閱讀 2818

發信人: giantice (大冰塊!), 信區: dsptech

標  題: 線性彙編經驗總結

發信站: 水木社群 (mon sep 11 22:47:20 2006), 站內

在c64上編了一些線性彙編,總結了一些經驗貼出來,多多指教。

線性彙編經驗總結:

1. 一般只是對有迴圈結構的**編寫彙編替代,非迴圈**不需要流水,效能提高不大

2. 為形成軟體流水,迴圈體不要做條件判斷,如果有條件判斷盡量移到迴圈體外,或者用非跳轉**替代

(例如,在量化相同**,用條件跳轉的何不用條件跳轉的效能相差5倍,再比如記憶體搬移大小不固定的可能產生

條件跳轉,使用了固定大小的子塊後,子塊大小對效能影響不大,彙編**和c**的效能相差20倍左右)

3. 耗時較多的指令主要是load/store/乘/點乘等指令,一般為提高效率,乙個迴圈盡可能處理多個資料操作,如

一般c迴圈處理乙個位元組、半字、字的操作,可以一次載入乙個半字、字、雙字進行操作處理,由於c64有很多以位元組、

半字為單位處理的指令,加上軟體流水,程式的效率可以提高達到原來彙編的2倍、4倍甚至8倍。

4. 碰到雙迴圈,一般將較小的迴圈放到內迴圈,然後外迴圈處理一次處理完乙個內迴圈的操作,大大減少跳轉的次數。

5. 實現同樣操作盡量用資料相關小易於形成軟體流水的指令,盡量用最少週期的指令,盡量用特殊指令(一般效率比較高)

例如:迴圈體實現乙個操作 val = is<0? -val : val,可以用比較和跳轉指令實現但破環軟體流水效率低,可以通過比較

擴充套件求或操作得到乙個-1或1的數,再用乘運算實現這個操作,雖然周期長了一些,但能形成軟體流水,實際提高了效率。

6. 線性彙編一般常見的錯誤:

*       乙個.sa彙編檔案中的多個函式體內使用同乙個標號(特別是迴圈標號loop/loop)等,編譯會報rededine

的錯誤,由於同乙個彙編檔案形成同乙個目標檔案,不同函式體中重複/使用同乙個標號肯定是不對的,要使用不同的標號區別開

*       指令使用不當,加/減乘/除/移位等指令一定要注意運算元的型別,對於無符號/絕對值型別的運算元最好

使用無符號的操作指令

*       運算元溢位問題

*       ...

7. 線性彙編除錯經驗:

*       匯程式設計序先除錯通過再進入具體工程中使用,一般是新建乙個**工程用於編寫、除錯、測試彙編**,

一方面,可以保證匯程式設計序準確無誤;另一方面,可以方便觀察彙編**和對應c**的效能提高情況,保證**測試下,

彙編**的效率確實比c**有所提高。

*       彙編**除錯時先不使用任何優化選項,這樣可以通過debug單步執行所編的**,便於檢查**的錯誤,

需要注意的是,即使不使用優化選項,在沒有分配資源單元時,編譯器仍然對暫存器的使用進行了調整(尤其是暫存器冗餘

使用時),即單步除錯時,暫存器的值不一定和**裡的執行得到的值相對應,但通過watch window觀察到所有暫存器及其

值的變化。

*       記憶體的觀察最簡便的方法就是使用memory window,還可以調整顯示的資料型別,通過紅色標記看到儲存

的變化,如果要對比前後的數值可以將其列印到輸出視窗。

*       週期性能的測試,有沒有使用優化選項其結果的正確性是一致的,匯程式設計序除錯通過後,使用優化選項

-o2/-o3來優化**,使用profile裡面的時鐘工具測試c**和彙編**執行的週期。 **

http://atguo.spaces.live.com/blog/cns!8e54bec45fa51764!145.entry感謝原作者(大冰塊!?)

經驗總結 資料預處理經驗總結1

1.對於特徵較多的df,進行資料預處理時需要對每個特徵變數進行相關處理,為了避免混亂,可以df.info 後將輸出複製到sublime,然後在sublime中針對每個特徵變數進行處理方式標註 非python 只是為了展示在sublime中的效果 action type 30697 non null ...

C 經驗總結

1.標準庫的使用過程中,自己一定要注意,不能使用迭代器保留,因為新的stl中,加入了迭代器新的檢測機制,就是為了怕使用者使用的過程中自己將迭代器有意無意的引用了不存在的物件,因此這就要求我們的迭代器物件一定要在訪問的物件之前進行析購,否則你的程式將出錯。這個是c v8.0 中ms 加入新的安全機制,...

面試經驗總結

我從事技術工作,這幾年的面試與被面試總結 先說我去被面試的經驗吧。回答清楚了2個問題,就能順利過關了。1。為什麼要離開上一家公司。2。公司為什麼要僱傭你。問第乙個問題的是hr 或老闆 呵呵 即使你技術過關,hr那裡沒有好的影響,結果是乙個字,難!如何回答呢?hr想推論出你在他的公司能呆多久。這個時候...