系列文章目錄
【跟小嘉學 Rust 編程】一、Rust 編程基礎
【跟小嘉學 Rust 編程】二、Rust 包管理工具使用
【跟小嘉學 Rust 編程】三、Rust 的基本程序概念
【跟小嘉學 Rust 編程】四、理解 Rust 的所有權概念
【跟小嘉學 Rust 編程】五、使用結構體關聯(lián)結構化數(shù)據(jù)
【跟小嘉學 Rust 編程】六、枚舉和模式匹配
【跟小嘉學 Rust 編程】七、使用包(Packages)、單元包(Crates)和模塊(Module)來管理項目
【跟小嘉學 Rust 編程】八、常見的集合
【跟小嘉學 Rust 編程】九、錯誤處理(Error Handling)
【跟小嘉學 Rust 編程】十一、編寫自動化測試
【跟小嘉學 Rust 編程】十二、構建一個命令行程序
【跟小嘉學 Rust 編程】十三、函數(shù)式語言特性:迭代器和閉包
【跟小嘉學 Rust 編程】十四、關于 Cargo 和 Crates.io
【跟小嘉學 Rust 編程】十五、智能指針(Smart Point)
【跟小嘉學 Rust 編程】十六、無畏并發(fā)(Fearless Concurrency)
【跟小嘉學 Rust 編程】十七、面向對象語言特性
【跟小嘉學 Rust 編程】十八、模式匹配(Patterns and Matching)
【跟小嘉學 Rust 編程】十九、高級特性
【跟小嘉學 Rust 編程】二十、進階擴展
【跟小嘉學 Rust 編程】二十一、網絡編程
【跟小嘉學 Rust 編程】二十三、Cargo 使用指南
【跟小嘉學 Rust 編程】二十四、內聯(lián)匯編(inline assembly)
前言
Rust 在 1.59 版本之中,引入了內聯(lián)匯編支持,該特性對于需要底層控制的應用非常有用,例如想要控制底層執(zhí)行、訪問特定的機器指令等。
主要教材參考 《The Rust Programming Language》
主要教材參考 《Rust For Rustaceans》
主要教材參考 《The Rustonomicon》
主要教材參考 《Rust 高級編程》
主要教材參考 《Cargo 指南》
一、 內聯(lián)匯編(Inline Assembly)
1.1、asm!
使用 asm!
和 global_asm!
宏, 內聯(lián)匯編使用的匯編語言和指令取決于相應的機器平臺,目前為止 Rust 支持以下平臺的內聯(lián)匯編
- x86 和 x86-64
- ARM
- AArch64
- RISC-V
- LoongArch
如果不支持,asm! 宏將會觸發(fā)一個 error。
use std::arch::asm;
// Multiply x by 6 using shifts and adds
let mut x: u64 = 4;
unsafe {
asm!(
"mov {tmp}, {x}",
"shl {tmp}, 1",
"shl {x}, 2",
"add {x}, {tmp}",
x = inout(reg) x,
tmp = out(reg) _,
);
}
assert_eq!(x, 4 * 6);
1.2、asm 宏的參數(shù)
這些參數(shù)為了讓編譯器幫助分配寄存器
- in:表示將變量值傳給寄存器
- out :表示將寄存器的值寫到變量
- inout: 即時輸入也是輸出,這種方式可以保證同一個寄存器來完成任務
- lateout:任何只在所有輸入被消費后才被寫入的輸出
- inlateout:輸出值在所有寄存器被讀取后,才被修改;
- sym: asm可以將符號重定位集合起來從線程本地數(shù)據(jù)中讀取
具體內容,我們會放到 Rust 嵌入式講解 這部分,目前不是我們系列的重點內容文章來源:http://www.zghlxwxcb.cn/news/detail-687115.html
總結
以上內容就是講解了 Rust 的 內聯(lián)匯編文章來源地址http://www.zghlxwxcb.cn/news/detail-687115.html
到了這里,關于【跟小嘉學 Rust 編程】二十四、內聯(lián)匯編(inline assembly)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!