Rust语言内嵌汇编代码

最近开发的项目,为了线程安全,统一改用rust语言进行编写和移植,但是头疼之处在于原项目c++代码内嵌了汇编,而且这种汇编涉及到cpu特殊指令的操作,无法转换为C语言代码,于是乎我就开始研究如何在rust语言中内嵌汇编代码。在国外论坛上找了好半天,终于找到一种方法,就是使用std::arch模块提供的 asm! 宏来实现内嵌汇编,这些代码将被插入到Rust程序生成的机器码中。

这里以32位x86汇编代码举例,执行一条最简单的add指令,示例代码如下:

use std::arch::asm;

fn main() {
    let mut a: i64 = 10;
    let mut b: i64 = 20;
    let mut aa: i64 = a;

    unsafe {
        asm!("add {0}, {1}", inout(reg) a, in(reg) b);
    }

    println!("{} + {} = {}", aa, b, a);
}

其实就是将a和b相加,将计算的结果放入a,输出结果如下图所示:

 终于搞定了,不过感觉rust的语法总是怪怪的,可能因为我也是个新手吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值