Rust現在於Nightly版本開始提供新的行內組語(Inline assembly)語法,目的是要取代原本提供的LLVM組合語言,其提供更佳的穩定性,未來將會進入穩定版本。初始實作版本支援ARM、x86以及RISC-V架構,未來將會視需求擴充支援。

在最佳化、作業系統和嵌入式系統開發,或是其他類型的低階程式開發中,開發者可能會需要為處理器編寫組合語言程式碼,滿足因為效能、精確計時,或是低階硬體存取的需求,Rust官方提到,行內組語提供了簡單的方式,可以將一些組合指令整合到Rust程式中,將Rust表達式作為輸入放到暫存器中,並直接以Rust變數取得輸出。

Rust Nightly一直以來,都有行內組語的語法,但這個行內組語語法非常特殊,提供LLVM IR可用的行內組語語法輕量打包,其公開了非常原始的LLVM組合語言構造,缺乏安全防護讓開發者無法安全地使用語法來編寫程式,只要略有錯誤就會產生內部編譯器錯誤,而非像是Rustc能夠提供使用者友善的錯誤訊息。

另外,舊版組合語言的語法也容易發生錯誤,雖然看起來與GCC的行內組語語法很相似,但是仍然有一些差異,官方表示,這種語法並不準備在任何非LLVM後端上支援,組合語言是非常重要的功能,但是這個版本不可能從Nightly進到Rust穩定版本。

為此,官方才在Rust中加入新的行內組語語法,在x86平臺,行內組語預設使用英特爾語法,但也可以選用AT&T語法。官方表示,他們重新命名了舊的行內組語,開發者現在仍然可以繼續在Rust Nightly中使用,但其容易出現內部編譯器錯誤的特性,最終他們還是會刪除這個舊語法,只是在當前新語法剛加入的階段,他們留著舊語法作為比較和替代。

熱門新聞

Advertisement