洛佳 组件化驱动、ROM运行环境与RustSBI从前级环境获取所有权,如从ROM 运行环境的#[entry]获得; • 配置GPIO状态后,只有对应外设类 型允许的操作函数能通过编译,否则 拒绝编译,避免不安全行为; • 开源标准抽象的功能,使用抽象规定 的调用方法。本芯片外设专属的功能 也可通过专有函数使用; • 用户代码简短易懂,容易编写和调 试,降低开发成本。 *BL808组件化驱动操作GPIO按钮和灯 组件化外设的分类和设计方法 列表,提供ROM初始化 完成的时钟配置 编译时生成镜像头,通 常包含处理器配置、时 钟和闪存配置等部分 #[entry] 过程宏 • 过程宏是卫生宏,完成语法树间的转 换,此处用于将main函数转换为固 件需要的入口函数。 • 包含ABI转换、检查参数等步骤。 • 使用过程宏时,同时使用对应包中的 start初始化代码。start代码无需由 用户编写,而是包含在宏生成的输出 代码中。 • 编译即可获得包含镜像头的固件包, 增 加 安 全 性 和 效 率 。 2023年的RustSBI 第 03 部分 RustSBI软件架构更新 • RISC-V SBI可运用于机器态和虚拟化 的宿主态,此时RustSBI实现应为虚 拟机提供电源、核管理等功能。 • 嵌套虚拟化存在时,RustSBI实现应 当为内部虚拟机软件模拟H指令集。 在这方面,Dramforever的项目1提 供了很好的例子。 • LARVa2项目是固件充当模拟器的例0 码力 | 21 页 | 3.12 MB | 1 年前3
Rust语言核心竞争力-庄晓立42 call void %9(i8* %5), !dbg !42 ret void, !dbg !44 } //trait object, fat pointer, vtalbe, 虚函数 同一个资源可能由变量A持有或变量B持有; 同一个变量可能持有资源也可能不持有资源; 同一时刻有且只有一个变量唯一持有(Owns)某个资源。 持有资源的变量超出作用域或被另赋新值时,自动调用 资源析构函数(Drop),无论该资源在堆上还是栈上。 Rust的RAII青出于蓝而胜于蓝(蓝=C++) (std::unique_ptr) Borrowing(租借使用权) Shared borrow (多人共享/只 v.push(&t); // error: `t` does // not live long enough } 因为t将先于v被析构(这一点易被忽视) v的析构函数可能访问到无效的t引用! 此处潜在的内存“不安全”代码没能逃过borrowck的法眼。 http://is.gd/HVy7yk fn test1(s: String) {} fn test2(s:0 码力 | 51 页 | 1.09 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.3. 函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 13. 函数式语言特性:迭代器与闭包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 13.1. 闭包:可以捕获其环境的匿名函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 20.4. 高级函数与闭包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 562 页 | 3.23 MB | 1 月前3
Rust 程序设计语言简体中文版.......................................................................................... 47 3.3. 函数 .................................................................................................. ........................... 316 13. Rust 中的函数式语言功能:迭代器与闭包 ...................................................................... 318 13.1. 闭包:可以捕获其环境的匿名函数 ........................................... ...................................................................................... 507 19.4. 高级函数与闭包 ...............................................................................................0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 语言学习笔记.................................................. 38 3.4.1.函数传递参数和返回参数类似于 let 语句 .................................... 38 3.4.2 涉及到函数和结构体的借用检查器 ........................................... 39 第四章 第六章 Rust 语言高级特性 ......................................................................... 61 6.1 函数式编程 ................................................................................. 61 6.1.1 闭包 ........ 61 6.1.2 闭包捕获周围环境的方式 ....................................................... 62 6.1.3 函数指针............................................................................ 64 6.2 unsafe 与原始指针0 码力 | 117 页 | 2.24 MB | 1 年前3
Comprehensive Rust(简体中文) 202412. . . . . 32 1 6.4.1 作用域和遮蔽(Shadowing). . . . . . . . . . . . . . . . . . . . . . . . . 32 6.5 函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.6 宏 . . . . 4.1 解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 14 泛型 74 14.1 泛型函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 14.2 泛型类型 . . . . impl Trait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 14.6 练习:通用 min 函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 14.6.1 解答 . . . . . . . . . .0 码力 | 359 页 | 1.33 MB | 11 月前3
Hello 算法 1.2.0 简体中文 Rust 版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 www.hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 问 题时能够作出专业的反应和判断,从而提升工作的整体质量。举一个简单例子,每种编程语言都内置了排序 函数: ‧ 如果我们没有学过数据结构与算法,那么给定任何数据,我们可能都塞给这个排序函数去做了。运行顺 畅、性能不错,看上去并没有什么问题。 ‧ 但如果学过算法,我们就会知道内置排序函数的时间复杂度是 ?(? log ?) ;而如果给定的数据是固定 位数的整数(例如学号),那么我们就可以0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.1.0 Rust版本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 第 0 章 前言 hello‑algo.com 5 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文字,视频和图片具有更高的信息密度和结构化程度,更易于理解。在本书中,重点和难点知识将主 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.0.0 Rust版Python 为准,例如使用 None 来表示“空”。 ‧ 本书部分放弃了编程语言的注释规范,以换取更加紧凑的内容排版。注释主要分为三种类型:标题注 释、内容注释、多行注释。 /* 标题注释,用于标注函数、类、测试样例等 */ // 内容注释,用于详解代码 /** * 多行 第 0 章 前言 hello‑algo.com 5 * 注释 */ 0.2.2 在动画图解中高效学习 相较于文 ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 库函数中都有插入排序的身影。 例三:货币找零。假设我们在超市购买了 69 元的商品,给了收银员 100 元,则收银员需要找我们 31 元。他 会很自然地完成如图 1‑3 所示的思考。 1. 可选项是比 iteration」是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?0 码力 | 383 页 | 17.61 MB | 1 年前3
基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭mqtt HPMQLite 上层MQTT Broker 设备 程序 HPMQ 上层MQTT Broker 通过边缘函数的⽅式快速兼容多⼚商 1)⾃定义协议+⾃定义函数 2)对接标准协议+公共函数 场景:多⼚商协议快速兼容 geo-distributed + 函数式开发 = 边缘计算 整体架构 • Webassembly,简称wasm • ⽤⼀句话描述,那就是Weba OpenYurt? • Krustlet? wasm如何分发部署? 3. HPMQ函数开发说明 HPMQ平台 触发器 公共函数 (⽐如:tb2aws) 私有函数 配置 关联 关联 使⽤流程 编写函数 Hpmqfile OCI镜像 镜像仓库 hpmq-cli build hpmq-cli push 发布函数 Demo 4. HPMQ未来规划 开源(https://github0 码力 | 31 页 | 3.95 MB | 1 年前3
共 29 条
- 1
- 2
- 3













