RISC-V 手册 v2(一本开源指令集的指南)1 2018 RISC-V 手册 一本开源指令集的指南 DAVID PATTERSON, ANDREW WATERMAN 翻译:勾凌睿、黄成、刘志刚 校阅:包云岗 1 参考卡 2 3 目录 参考卡 ................................................ ....................................................................... 21 第二章 RV32I:RISC-V 基础整数指令集 ......................................................................................23 2.1 导言 ................................................. 31 2.9 使用插入排序比较 RV32I,ARM-32,MIPS-32 和 x86-32 指令集 ........................... 32 2.10 结束语 ........................................................0 码力 | 164 页 | 8.85 MB | 1 年前3
 RISC-V 开放架构设计之道 1.0.0Bell),微软公司成员,Digital PDP-11 和 VAX-11 指令集架构的设计者 这本方便的小书轻松地总结了 RISC-V 指令集架构所有的基本要素,是学生和从 业者的完美参考指南。 ——兰迪·卡茨(Randy Katz),加州大学伯克利分校教授,RAID 存储系统的 发明者之一 RISC-V 是学生学习指令集架构和汇编语言编程的不错选择,二者是后续使用高 级语言的基础。本书清晰地介绍了 RISC-V,还包含对其演化历史的深刻见解,以 及与其他常见架构的对比。以过去的指令集架构为鉴,RISC-V 的设计者能规避 一些不必要、不合理的特性,使其易于教学。虽然它很简洁,但它的强大足以在实 际应用中广泛使用。很久以前我教过汇编编程的入门课,如果我现在去教这门课, 我很乐意用本书作为教材。 ——约翰·马沙(John Mashey),MIPS 指令集架构的设计者之一 本书讲述了 RISC-V 能做什么,及其设计者为何赋予 rs2,imm(rs1) SD rs2,imm(rs1) 开源 参考卡 ① 基础整数指令集:RV32I 和RV64I RV 特权指令 +RV64I SLLW rd,rs1,rs2 SLLIW rd,rs1,shamt SRLW rd,rs1,rs2 SRLIW rd,rs1,shamt0 码力 | 223 页 | 15.31 MB | 1 年前3
 简明 X86 汇编语言教程 ...................................................................................46 第七章 X86 汇编指令集汇总...............................................................................................47 指令),而你很清楚,那么可以用 DB 机器码的方式强行写下指 令。这意味着,你可以超越汇编器的能力撰写汇编程序,然而,直接用机器码编程是几乎肯 定是一件费力不讨好的事——汇编器厂商会经常更新它所支持的指令集以适应市场需要,而 且,你可以期待你的汇编其能够产生正确的代码,因为机器查表是不会出错的。既然机器能 够帮我们做将程序转换为代码这件事情,那么为什么不让它来做呢? 细心的读者不难发现,在程序中我们没有对 一样,它用的是 Linux 中的 80h 中断,相当于 DOS 下的 21h 中断,只是因为 Linux 是 32 位操作系统,所以采用了 eax、ebx 等寄存器。 第七章 X86 汇编指令集汇总 一.数据传输指令 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1. 通用数据传送指令. 1)MOV 传送字或字节. MOV SX 先符号扩展,再传送. MOV0 码力 | 63 页 | 598.28 KB | 1 年前3
 MoonBit月兔编程语言 现代编程思想 第十四课 案例:堆栈虚拟机	
部分计算:程序优化,根据已知信息,运算进⾏特化 已知源程序与解释器,进⾏部分运算,获得⽬标程序 ⽬标程序 x 输⼊数据 -> 输出数据 2 虚拟机 ⼀处编写,处处运⾏ 定义⼀个不基于任何平台的指令集 在不同平台上实现解释器 两种常⻅的虚拟机 堆栈虚拟机:运算数存储在栈上,数据遵循先进后出原则 寄存器虚拟机:运算数存储在寄存器中 3 寄存器虚拟机 例:Lua VM (The Implementation ;; m 5 WebAssembly WebAssembly是什么? ⼀个虚拟指令集 可以在浏览器以及其他运⾏时(Wasmtime WAMR WasmEdge等)中运⾏ MoonBit的第⼀个后端 WebAssembly指令集的⼦集为例 6 简单指令集 数据 只考虑32位有符号整数 ⾮零代表 true ,零代表 false 指令 数据操作: const tail params/locals x + y x + y ... 30 总结 本节课展示了⼀个堆栈虚拟机 介绍了WebAssebmly指令集的⼀⼩部份 实现了⼀个编译器 实现了⼀个解释器 挑战 在语法解析器中拓展函数定义 在指令集中添加提前返回指令( return ) 310 码力 | 31 页 | 594.38 KB | 1 年前3
 05-MoonBit 编程语言(WASM 技术)服务端应用展望以及对Kubernetes生态的影响WASM 特性,基本只当作 ISA(指令集) • 绕过 WASM 低级概念,转而使用语言的高级概念 • 牺牲语言互换性,换取 WASM 下立刻应用高级特性 关注点分离(1) 高级语言代码 (高级语言层面提供 内部互联与模块化) WASM 部署文件 (将指令集限制在 WASM 1.0 和有限几 个扩展的限度) 后端运行时 (WASM虚拟机 基础的指令集) 构建 内部 互联 运行0 码力 | 30 页 | 3.41 MB | 9 月前3
 Rust在物理引擎研发中的应用 崔汉青在不损耗性能的情况下,其优秀的语 法设计保证了语言的强大表达力:用更少 的代码写更多的功能 # 高表达力 # 安全 Rust 依靠 LLVM 实现了多目标平台,并可 以用语言内建的 target_feature 针对不同 的指令集进行处理 # 跨平台 Cargo 真的比 cmake 好太多了 # 依赖管理 # 无惧并发 Rust 在语法层面极大程度保证了内存安全 和并发安全 语言内建的 async/await,还有优秀的 AoSoA类型,跨端确定性难以保证 nalgebra 过于复杂,大量的泛型导致使用 不便,代码质量一般 其余开源 crates 完成度不高 Rust 开源数学库的痛点 写好数学库并不容易 • 充分利用目标平台指令集 – 大量的针对目标平台的SIMD优化 • 数学计算本质上是类似的 – 大量的相似代码 • Portable SIMD unstable • 影响跨端确定性的因素太多了 motphys-math 表达力不足 不容易做精细性能优化 Procedure Macro 过于复杂 结果不可见 那么,用代码生成代码?Web 开发用的模板引擎, 也可以用于生成 Rust 代码 tera 模板生成分指令集优化的 Rust 代码 提供远超 Procedure Macro 的可读性和易用性 mathbench • 已有开源数学 crates 的 benchmark • motphys-math benchmark0 码力 | 22 页 | 1.18 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 04 从汇编角度看编译器优化? 因为他不敢保证运行这个程序的电脑支持 AVX 指令集…… 两个 int32 可以合并为一个 int64 四个 int32 可以合并为一个 __m128 八个 int32 可以合并为一个 __m256 让编译器自动检测当前硬件支持的指令集 -march=native 让编译器自动判断当前硬件支 持的指令。老师的电脑支持 AVX 指令集,所 以他用了。不过注意这样编译出的程序,可能 放到别人不支持0 码力 | 108 页 | 9.47 MB | 1 年前3
 4 Python语法扩展框架Moshmosh和其上的CPython compatible JIT实现 thautwarmlot of advanced tricks in the Julia back end *抽象指令 (没有实际指令) Julia“生成函数” Python 字节码 JuVM虚拟栈机 (具体指令集) 抽象机器 (只规定语义) JuVM栈机指令 Python JIT 函数包装 Julia AST/CodeInfo (一个)实例化/后端 代码生成 PyCall.jl 自动得到 运行时处理技巧 而Julia的“生成函数”能够在生成之后, 重新触发编译, 消除所有检查自身是否生成的代码。 4 参与开发 1. Instrinsics 后端实现: py_add, py_not, etc… 2. 对虚拟指令集的优化passes 3. issues… Intrinsics: restrain_jit/abs_compiler/py_apis.py Intrinsics Intrinsics: Re0 码力 | 30 页 | 8.04 MB | 1 年前3
 洛佳 组件化驱动、ROM运行环境与RustSBI的宿主态,此时RustSBI实现应为虚 拟机提供电源、核管理等功能。 • 嵌套虚拟化存在时,RustSBI实现应 当为内部虚拟机软件模拟H指令集。 在这方面,Dramforever的项目1提 供了很好的例子。 • LARVa2项目是固件充当模拟器的例 子,这里RustSBI被编译到RISC-V之 外的指令集。 • YdrMaster设计的sbi-testing3测试 框架可轻松检查SBI实现的正确性。 1 https://github0 码力 | 21 页 | 3.12 MB | 1 年前3
 3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查 我个人不能接受编译好的程序在运行时还要求源代码存在。 同时有一个叫bytecode的库,解决了一些使用字节码的难题。 字节码长相如何? 演示 先把Python字节码翻译到一个精简版本, 便于分析 指令集这么大时准备追x86汇编了? 指令集减小到15以内 混合IR tmp = Call(x, (1, 2)) Python字节码 LOAD_FAST f LOAD_CONST (1, 2) CALL_FUNCTION0 码力 | 43 页 | 10.71 MB | 1 年前3
共 59 条
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 













