我想在我的C代碼中編寫一些內聯ARM彙編。對於這段代碼,我需要使用一個或兩個以上的寄存器作爲輸入和輸出到函數。我知道如何使用clobber列表來告訴GCC我將使用一些額外的寄存器來執行我的計算。在GCC中使用內聯ARM彙編時優化使用的寄存器
但是,我相信,海灣合作委員會享有自由洗牌周圍寄存器用於優化時什麼。也就是說,我覺得使用固定寄存器進行計算是個不錯的主意。
什麼是使用一些額外的寄存器既不是輸入也不是我的內聯彙編的輸出,不使用固定的寄存器的最佳方式?
P.S.我的想法是使用虛擬輸出變量可能做的伎倆,但我不知道是什麼樣的,這將有奇怪的其他效果......
我敢打賭這*可能是相當直接的,但我會讓C大師回答這個問題。 :-) – Noldorin 2012-01-04 00:25:08
我知道你可以使用寄存器別名,並讓編譯器選擇要使用的寄存器,但不記得它的語法。或者你可以咬緊牙關,只需寫一個.s文件並單獨組裝,以獲得更大的靈活性。 – 2012-01-04 00:57:57
@MichaelDorgan感謝您的意見。 我知道輸入和輸出寄存器是這樣工作的,但我還沒有看到它用於臨時寄存器.. 您的第二種解決方案有與我需要的相反的功能,它刪除了更多的優化選項(指定輸入和輸出寄存器)... – Madcowswe 2012-01-04 01:16:43