编写内联x86_64程序集

时间:2016-12-21 20:26:49

标签: rust inline-assembly

下面的代码用于在4月份建立得很好(Rust版本~1.6),但它不再存在了。

#![feature(asm)]

enum MyEnum { One = 1 }

fn main() {
    unsafe {
        asm!("nop" : : "i" (MyEnum::One as isize) : : ); // broken
    }
}

错误消息并未指出可能导致此问题的任何明显更改。

1 个答案:

答案 0 :(得分:4)

"i"约束的值必须是编译时常量,并且您提供的内容不是。如果将添加内容移动到Rust中,则可以使用约束"ri"来使用寄存器和常量。

对于内联汇编程序,某些内容是否为常量可能会受到优化选项的影响。