Rust Nightly版本现提供新的行内组语语法

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中使用,但其容易出现内部编译器错误的特性,最终他们还是会删除这个旧语法,只是在当前新语法刚加入的阶段,他们留着旧语法作为比较和替代。