Rust内联组装件中是否存在“_emit”或等同物?

7eumitmz  于 2022-12-29  发布在  其他
关注(0)|答案(1)|浏览(108)

在Visual Studio中,我们可以使用“_emit”指令生成操作码字节。
此外,在GCC中,我们可以使用类似于:

asm __volatile__ (".byte 0x12");

我们可以在Rust内联装配中做一些类似的事情吗?

y1aodyip

y1aodyip1#

不幸的是,Rust的标准内联asm基本上是GAS(默认情况下使用intel语法),所以

#![no_main]

#[no_mangle]
unsafe extern "cdecl" fn main() {
    core::arch::asm!(".byte 12h");
}

将产生

main:
  push rax
  .byte 18
  pop rax
  ret

这与C中的相同。

相关问题